MT_SRAND 는 PHP에서 의사 랜덤 번호 생성기의 초기화 기능입니다. 종자 값을 설정하여 임의의 숫자 생성기를 초기화합니다. mt_srand는 일반적으로 mt_rand 와 함께 사용되며, 여기서 mt_rand는 의사 랜덤 번호를 반환하는 데 사용됩니다. MT_Srand 에 동일한 시드 값을 제공함으로써 MT_Rand 에 의해 생성 된 랜덤 숫자 시퀀스가 동일한 조건에서 실행할 때마다 동일하게 보장 할 수있어 생성 된 랜덤 숫자를 예측 가능하고 반복 할 수있게합니다.
<span><span><span class="hljs-title function_ invoke__">mt_srand</span></span><span>(</span><span><span class="hljs-number">12345</span></span><span>); </span><span><span class="hljs-comment">// 랜덤 숫자 생성기의 시드를 설정하십시오</span></span><span>
</span><span><span class="hljs-variable">$random_number</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mt_rand</span></span><span>(); </span><span><span class="hljs-comment">// 의사 랜덤 번호를 생성합니다</span></span><span>
</span></span>
해시 함수는 모든 길이의 입력 데이터를 고정 길이의 출력 값으로 변환합니다. 해시 함수의 출력 결과는 일반적으로 돌이킬 수 없습니다. 즉, 원래 데이터는 해시 값에서 추론 할 수 없습니다. 공통 해시 기능에는 MD5 , SHA1 , SHA256 등이 포함됩니다. PHP는 개발자가 사용할 수있는 다양한 내장 해싱 알고리즘을 제공합니다.
<span><span><span class="hljs-variable">$hash_value</span></span><span> = </span><span><span class="hljs-title function_ invoke__">hash</span></span><span>(</span><span><span class="hljs-string">'sha256'</span></span><span>, </span><span><span class="hljs-string">'some input data'</span></span><span>); </span><span><span class="hljs-comment">// 사용 sha256 알고리즘 해싱</span></span><span>
</span></span>
해시 함수는 입력 데이터의 무작위성을 신경 쓰지 않지만 결과는 일반적으로 무작위 인 것으로 보이며 동일한 입력 데이터에 대해 항상 동일한 해시를 반환합니다.
반복 가능한 암호화 랜덤 값을 달성하려면 MT_Srand 및 HASH 함수 사용을 고려하십시오. 기본 아이디어는 해시 함수를 사용하여 일부 입력 데이터 (예 : 사용자 입력, 타임 스탬프 또는 기타 변수)를 해시 한 다음 해시 값을 MT_Srand 의 시드로 사용하는 것입니다. 이를 통해 동일한 입력 데이터를 기반으로 생성 된 랜덤 숫자 시퀀스는 실행할 때마다 동일하며 해싱 프로세스는 "반복 가능한"암호화 랜덤 값 효과를 달성하기 위해 특정 "암호화"를 증가시킬 수 있습니다.
입력 데이터 선택 : 입력 데이터로 사용자가 입력 한 문자열, 타임 스탬프 또는 기타 변수 매개 변수를 선택할 수 있습니다.
해시 함수를 사용하여 고정 길이 해시를 생성합니다 . 해시 입력 데이터를 사용하여 고정 길이 해시를 얻습니다.
해시를 mt_srand 로 시드 : 해시를 적합한 숫자로 변환하여 의사-랜덤 번호 생성기를 초기화하기 위해 mt_srand 로 전달합니다.
임의 값을 생성하십시오 : mt_rand를 사용하여 임의 숫자를 생성하십시오.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 단계 1: 입력 데이터를 선택하십시오</span></span><span>
</span><span><span class="hljs-variable">$input_data</span></span><span> = </span><span><span class="hljs-string">'user_input_123'</span></span><span>; </span><span><span class="hljs-comment">// 예를 들어, 사용자가 입력 한 문자열입니다</span></span><span>
</span><span><span class="hljs-comment">// 단계 2: 사용哈希函数生成哈希值</span></span><span>
</span><span><span class="hljs-variable">$hashed_value</span></span><span> = </span><span><span class="hljs-title function_ invoke__">hash</span></span><span>(</span><span><span class="hljs-string">'sha256'</span></span><span>, </span><span><span class="hljs-variable">$input_data</span></span><span>); </span><span><span class="hljs-comment">// 사용 sha256 알고리즘은 해시를 생성합니다</span></span><span>
</span><span><span class="hljs-comment">// 단계 3: 해시 값을 숫자로 변환합니다,종자 값으로</span></span><span>
</span><span><span class="hljs-variable">$seed</span></span><span> = </span><span><span class="hljs-title function_ invoke__">hexdec</span></span><span>(</span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$hashed_value</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">8</span></span><span>)); </span><span><span class="hljs-comment">// 해시를 받기 전에8비트를 소수점 숫자로 변환합니다</span></span><span>
</span><span><span class="hljs-comment">// 단계 4: 사용 mt_srand 랜덤 번호 생성기를 초기화하십시오</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mt_srand</span></span><span>(</span><span><span class="hljs-variable">$seed</span></span><span>);
</span><span><span class="hljs-comment">// 반복 가능한 랜덤 숫자를 생성합니다</span></span><span>
</span><span><span class="hljs-variable">$random_number</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mt_rand</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"생성 된 랜덤 번호: <span class="hljs-subst">$random_number</span></span></span><span>\n";
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
해시 값의 처리 : 예제 코드에서 SHA256 해시 알고리즘을 사용하여 입력 데이터를 해시 한 다음 해시 값의 처음 8자를 소수점 숫자로 변환합니다. MT_SRAND는 정수 유형의 씨앗이 필요하고 해시 값은 일반적으로 매우 긴 문자열이므로 처음 몇자를 취할 수 있기 때문입니다.
반복성 : 동일한 input_data가 전달 될 때마다 해시 값이 동일하므로 생성 된 종자 값도 동일합니다. 이러한 방식으로 MT_RAND 에 의해 생성 된 랜덤 숫자는 동일하여 반복 가능한 효과를 얻습니다.
암호화 : 해시 함수를 사용함으로써, 무작위 숫자의 반복이 보장 될 수 있지만 해시 자체는 어느 정도의 예측 불가능 성과 복잡성을 제공합니다. 따라서, 해시 함수와 결합한 후 무작위 숫자 생성은 반복 될뿐만 아니라 어느 정도의 "암호화"를 갖는다.
반복 가능한 테스트 데이터 생성에 적합 : 여러 실행에서 동일한 랜덤 데이터를 생성 해야하는 경우 (예 : 동일한 환경에서 테스트 데이터를 시뮬레이션하는 것),이 방법은 매번 생성 된 임의의 숫자가 동일하도록 보장 할 수 있습니다.
실제 암호화에 적합하지 않음 : 해시 함수를 사용하면 무작위 숫자 생성의 복잡성을 증가시킬 수 있지만, 보안 암호화가 실제로 필요한 시나리오에는 적합하지 않습니다. 보안 요구 사항이 높은 임의의 숫자 생성의 경우 Random_Bytes 또는 Random_int 와 같은 강력한 암호화 임의 숫자 생성 방법을 고려해야합니다.