"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 중복을 최소화하면서 5자리 무작위 문자열을 만드는 방법은 무엇입니까?

중복을 최소화하면서 5자리 무작위 문자열을 만드는 방법은 무엇입니까?

2024-11-06에 게시됨
검색:315

How to Create a 5-Character Random String with Minimal Duplication?

최소 중복으로 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); 
}

이 함수는 현재 시간부터 마이크로초를 활용하여 점진적으로 임의 문자열을 생성합니다. 그 결과는 각 후속 세대마다 점점 더 고유한 문자열이 됩니다. 그러나 솔팅이나 토큰 생성과 같은 암호화 목적으로 사용되는 경우 다른 방법보다 예측 가능성이 높다는 점은 주목할 가치가 있습니다.

릴리스 선언문 이 글은 1729323318에서 재인쇄되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3