PHP에서 이것을 수행하는 방법을 알고 있으며 최근에이 코드를 발견했습니다. 나는 JS에 매우 익숙하다. 누군가이 코드의 기능과 구현 방법을 설명 할 수 있습니까? 근본적으로 내가해야 할 일은 내가 만들고있는 사이트에 대해 공정하고 도박적인 경험을하는 것입니다.자바 스크립트 암호화 기능 - 어떻게 작동합니까?
PHP 관련 예제 (필자와 관련된 모든 것) : 나는 rand()를 암호화하고 내기 전에 롤백 된 암호화 된 버전을 제공하고이를 client_seed에 추가합니다. 사용자는 client_seed를 변경할 수 있습니다. 그들은 59.73이라는 숫자를 얻은 후 client_seed와 함께 암호화 된 버전을 추가하여 내기가 제공되기 전에 제공되는 해시가 공정하게 제공되는지 확인합니다.
JS와 PHP가 아닌 JS에서 모든 것을 가지고 있기 때문에이 코드를 구현할 수있는 방법을 이해할 수 없다는 것을 제외하고는.
감사합니다.
<script type="text/javascript">
function lucky_number(server_seed, client_seed, nonce) {
var hex_chars_to_use = 5;
var hash = crypto.createHmac('sha512', server_seed).update(client_seed + ':' + nonce.toString()).digest('hex');
var len = hash.length;
for (var i = 0; i < len; i += hex_chars_to_use) {
var hex = hash.substring(i, i + hex_chars_to_use);
var lucky = parseInt(hex, 16);
if (lucky < 1000000)
return lucky;
}
// the 26th substring will always be <4096 (3 hex digits), so we won't get here
util.log(0, 'RAN OUT OF HASH! using ' + hash + ' - returning', 0);
return 0;
};
</script>
그래서 어떤 코스를 택할 것입니까? 내가 작성한 PHP에서 코드가 잘 작동하지만 내 문제는 그들이 롤을 클릭하면 페이지를 새로 고칩니다. 나는 그것이 롤업 승/O를 새로 고치고 다음 균형을 업데이 트 싶어요 (그들은 .001 그리고 내기 .0001 난 그것이 자동으로 .0009로 업데이 트하려는 경우 그것은 손실 또는 .0011 이기면). 이 작업을 수행하기 위해 어떤 JS를 사용해야합니까? – user2534566
매우 도움이되지 않는 대답은 진행하기 전에 보안 프로토콜을 만드는 것입니다. 이 코드는 초기 문제가 아니며 문제는 문제 공간을 이해하지 못하고 문제를 해결할 수있는 솔루션을 이해하지 못하는 것입니다. 우선 프로토콜을 개발하고 검증해야합니다 (유스 케이스로 시작한 다음 디자인, 디자인 주변의 스레드 모델 등으로 시작). 이해할 수 있듯이, 이것은 Stackoverflow를 뛰어 넘으며 많은 함정이 있습니다. –
그런 다음 클라이언트가 로컬에서 충분히 랜덤 한 랜덤을 단순히 생성하는 버전을 만들고자한다면 요청간에 PRNG의 상태를 저장해야합니다. 이것은 안전한 프로토콜을 만들지는 않지만 귀하의 상황에 충분할 수 있습니다. –