최소 중복으로 5개의 무작위 문자 생성
중복을 최소화하면서 무작위 5자 문자열을 생성하려면 다음을 활용하는 가장 효과적인 접근 방식 중 하나입니다. PHP 기능과 영리한 기술의 조합. 솔루션을 자세히 살펴보겠습니다.
md5 및 rand 사용
$rand = substr(md5(microtime()),rand(0,26),5);
이 방법은 md5 해시 함수를 사용하여 타임스탬프에서 32자 문자열을 생성합니다. substr과 rand를 사용하면 임의의 5자리 하위 섹션이 추출되어 중복 확률이 낮은 문자열이 생성됩니다.
shuffle 및 array_rand 사용
$seed = str_split('abcdefghijklmnopqrstuvwxyz'
.'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
.'0123456789!@#$%^&*()'); // and any other characters
shuffle($seed); // probably optional since array_is randomized; this may be redundant
$rand = '';
foreach (array_rand($seed, 5) as $k) $rand .= $seed[$k];
여기에서는 미리 정의된 문자 집합($seed)이 무작위로 섞입니다. 그런 다음 array_rand를 사용하여 섞인 배열에서 5개의 문자를 무작위로 선택하여 다양한 문자 분포를 보장합니다.
증분 해싱 사용
function incrementalHash($len = 5){
$charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
$base = strlen($charset);
$result = '';
$now = explode(' ', microtime())[1];
while ($now >= $base){
$i = (int)$now % $base;
$result = $charset[$i] . $result;
$now /= $base;
}
return substr(str_repeat($charset[0], $len) . $result, -$len);
}
이 함수는 현재 시간부터 마이크로초를 활용하여 점진적으로 임의 문자열을 생성합니다. 그 결과는 각 후속 세대마다 점점 더 고유한 문자열이 됩니다. 그러나 솔팅이나 토큰 생성과 같은 암호화 목적으로 사용되는 경우 다른 방법보다 예측 가능성이 높다는 점은 주목할 가치가 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3