PHP에서 임의의 문자열 생성

Muhammad Abubakar 2023년1월30일
  1. PHP에서 임의의 문자열 생성
  2. uniqid()함수를 사용하여 임의의 문자열 생성
  3. PHP에서str_shuffle($string)함수를 사용하여 임의의 문자열 생성
  4. PHP에서 임의의 16 진수 문자열 생성
  5. PHP에서 암호화로 안전한 임의 문자열 생성
PHP에서 임의의 문자열 생성

이 튜토리얼 기사에서는 PHP에서 임의의 문자열을 생성하는 방법에 대해 설명합니다.

PHP에서 임의의 문자열 생성

PHP에서 임의의 문자열 생성기 함수를 정의 할 것입니다.

<?php
function random_str_generator ($len_of_gen_str){
    $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    $var_size = strlen($chars);
    echo "Random string ="; 
    for( $x = 0; $x < $len_of_gen_str; $x++ ) {
        $random_str= $chars[ rand( 0, $var_size - 1 ) ];  
        echo $random_str;  
    }
echo "\n";
}
random_str_generator (8)
?>

출력:

Random string =ExmIixDb

선언 된 변수에서 알파벳 만 사용할 필요는 없습니다. 무작위로 생성되는 문자열에 원하는 숫자, 기호 등을 추가 할 수도 있습니다.

네 번째 줄에서는strlen()함수를 사용하여 선언 된 변수의 길이를 가져옵니다. rand( 0, $var_size - 1 )가 특정 범위에서 색인을 생성 한 다음 해당 값을 새로 생성 된 변수에 추가하는 데 도움이되며 루프는rand( 0, $var_size - 1 )가 특정 길이를 생성하는 데 도움이됩니다. 문자열

uniqid()함수를 사용하여 임의의 문자열 생성

이것은 내장 함수uniqid()를 사용하여 임의의 문자열을 생성하는 또 다른 방법입니다. 현재 타임 스탬프를 기반으로하는 13 자의 긴 고유 식별자를 생성합니다. 해결책은 다음과 같습니다.

<?php 
$Random_str = uniqid();  
echo "Random String:", $Random_str, "\n";
?> 

출력:

Random String:606208975a59f

uniqid()함수는 또한 문자열 또는 식별자의 고유성을 증가시킬 수있는 매개 변수를 허용합니다. 더 설명 된 가치를 제공합니다. 다음은 몇 가지 솔루션입니다.

<?php 
echo uniqid('user_');
?> 

출력:

user_60620a2b23235 

PHP에서str_shuffle($string)함수를 사용하여 임의의 문자열 생성

str_shuffle($string)은 내장 함수로, 위에서 본 것처럼 무작위 문자열 생성기 함수로 작동합니다. 루프와rand()내장 함수를 사용하여 무작위 문자열을 생성하지만 그것도 다릅니다. 우리는(str_shuffle($string),0,x(any number))범위를 지정하여 까다로운 길이의 고유 한 암호를 형성하는 데 도움이 될 수있는 고유 한 문자열을 생성하는 데 내장 된 함수 만 사용합니다.

<?php
 $x = 0;
 $y = 10;
$Strings = '0123456789abcdefghijklmnopqrstuvwxyz';
echo "Gen_rand_str: ",substr(str_shuffle($Strings), $x, $y), "\n";

$a = 0;
$b = 20;
$Strings='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
echo "Gen_My_Pass: ",'hello.'.substr(str_shuffle($Strings), $a, $b).'.World',"\n";
?>

출력:

Gen_rand_str: b38aenwpkh
Gen_My_Pass: hello.EUMm4TB26CltW8qYnApF.World

또한 URL, 임의의 파일 이름 등을 생성하는 데 도움이 될 수 있습니다. 위의 생성기보다 안전하고 예측이 복잡합니다.

이 방법은 더 정확하지만 임의의 문자열에 동일한 문자를 두 번 제공 할 수없고 입력 문자열을 제공하는 한 임의 출력이 길다는 것과 같은 몇 가지 문제가 있습니다.

PHP에서 임의의 16 진수 문자열 생성

md5($string, $raw_output)sha1($string,$raw_output)함수는 임의의 16 진수 문자열을 생성하는 데 도움이됩니다. 이 함수에서는 출력을 얻기위한 입력으로time()을 사용하고, 32 자 16 진수 문자열을 원하면md5()를 사용하고 40 자에는sha1()을 사용합니다. . 마지막으로substr()함수로 지정된 길이의 임의의 문자열을 추출 할 수도 있습니다.

<?php
 
echo "Out1: ",substr(md5(time()), 0, 16),"\n";
 
echo "Out2: ",substr(sha1(time()), 0, 16),"\n";
 
echo "Out3: ",md5(time()),"\n";
 
echo "Out4: ",sha1(time()),"\n";
 
?>

출력:

Out1: fcc78a076a5b743d
Out2: ae03e817c0dc6048
Out3: fcc78a076a5b743d8916038b48a6b0ee
Out4: ae03e817c0dc6048c19b708ce411a058294425b1

PHP에서 암호화로 안전한 임의 문자열 생성

이 생성기는 PHP의 가장 중요하고 유용한 기능입니다. 위에서 논의 할 모든 생성기는 암호 학적으로 안전하지 않습니다. 암호화 보안이란 임의의 문자열도 생성 할 수 있다는 것을 의미하지만 제 3자가 동일한 임의의 숫자를 생성하는 것은 어렵습니다. 이것이 우리가 암호 학적으로 안전하다고 말할 수있는 이유입니다.

random_bytes($length)는 암호 학적으로 안전한 임의의 문자열을 생성 할 수있는 함수입니다. 사용자가 길이 매개 변수를 지정합니다. 아래 예를 참조하십시오.

<?php
 
echo "Output-1: ",bin2hex(random_bytes(10)),"\n";
 
echo "Output-2: ",bin2hex(random_bytes(20)),"\n";
 
echo "Output-3: ",bin2hex(random_bytes(24)),"\n";
 
?>

출력:

Output-1: 911fc716798ce464c7c3
Output-2: 182fedf65a90b66139d80dbfc0f82912b73f37cd
Output-3: c3408d3a0dea41251dce940fe550452ca180cf5effaad235

위 코드에서 보았 듯이bin2hex()함수를 사용했습니다. random_bytes($length)가 특정 출력을 제공하면bin2hex()가이를 16 진수 값으로 변환합니다. random_bytes($length)함수의 값을 두 배로 늘릴 수 있습니다.

openssl_random_pseudo_bytes($length, &$crypto_strong)함수는 또한 무작위로 암호화 된 문자열을 생성하는 데 사용됩니다. crypto_strong매개 변수는 문자열이 암호화 보안 알고리즘에서 생성되었는지 여부를 분석하는 데 사용됩니다.

a에서 z까지의 모든 문자열을 활용하는 암호화 보안 무작위 문자열을 원한다면 아래 코드를 사용합니다.

<?php
 
function secure_random_string($length) {
    $rand_string = '';
    for($i = 0; $i < $length; $i++) {
        $number = random_int(0, 36);
        $character = base_convert($number, 10, 36);
        $rand_string .= $character;
    }
 
    return $rand_string;
}
 
echo "Sec_Out_1: ",secure_random_string(10),"\n";
 
echo  "Sec_Out_2: ",secure_random_string(10),"\n";
 
echo  "Sec_Out_3: ",secure_random_string(10),"\n";
 
?>

출력:

Sec_Out_1: znxtaqynoi
Sec_Out_2: 10k10zkddntm
Sec_Out_3: ook8gfck6u

secure_random_string()함수에서 임의 문자열의 길이를 지정합니다. 이 함수에서는random_int()가 주어진 특정 범위에서 임의의 정수를 생성하는 루프를 사용합니다. 그 후base_convert()함수를 사용하여 10 진법부터 36 진법까지의 정수를 변환합니다. 결국 결과 문자는 0-9의 모든 숫자와 a-z의 문자입니다. 무작위로 암호화 된 문자열을 생성하는 또 다른 방법입니다.

관련 문장 - PHP String