이 암호화 확장은 PHP7에 통합되어 있으므로 특별한 설치가 필요하지 않습니다. PHP7 이하 버전인 경우 확장을 독립적으로 설치해야 합니다. 테스트 시 아래에 설명된 기능을 찾을 수 없다면 현재 PHP 버전을 확인하세요.
의사 무작위 문자 생성
var_dump(bin2hex(random_bytes(5))); // string(10) "f28dc2bdd5" var_dump(random_bytes(5)); // string(5) "�"��"
random_bytes() 각 호출은 서로 다른 내용의 이진 문자열을 생성하며 매개변수는 이진 바이트 길이입니다. 직접 얻은 바이너리 데이터는 잘못된 형식이므로 일반적으로 bin2hex()를 사용하여 바이너리를 이해할 수 있는 16진수 형식 문자열로 변환해야 합니다. 그러나 결과적으로 변환 후 16진수 문자 길이는 설정한 문자 길이의 두 배가 됩니다. 이 기능의 기능은 안전한 사용자 비밀번호 솔트, 핵심 키워드 또는 초기화 벡터를 생성할 수 있습니다.
random_bytes()는 호출될 때마다 다른 내용의 문자열을 생성하며 매개변수는 문자 길이의 임의 문자입니다. 여기서는 5를 전달하고 10자를 반환합니다. 이 매개변수는 문자 수임을 알 수 있습니다. , 반환되는 것은 실제로 한 문자가 2바이트를 차지하는 반환 형식에 해당하는 바이트 수입니다. 아니면 매개변수의 두 배를 반환한다는 점만 기억하면 됩니다. 이 기능의 역할은 안전한 사용자 비밀번호 솔트, 핵심 키워드 또는 초기화 벡터를 생성할 수 있습니다.
의사 난수 생성
var_dump(random_int(100, 999)); var_dump(random_int(-1000, 0)); // int(900) // int(-791)
정수 생성의 경우 더 간단합니다. 난수 범위인 Random_int() 함수에 두 개의 매개변수만 제공하면 됩니다. 실제로는 mt_rand()와 동일하게 사용됩니다.
생성 소스
위의 두 가지 암호화 의사 난수 함수의 생성 소스는 다음과 같이 운영 체제에 따라 다릅니다.
Windows 시스템에서는 CryptGenRandom() 함수가 사용됩니다. CNG-API는 7.2.0부터 사용됩니다
리눅스 시스템에서는 Linux getrandom(2) 시스템 호출이 사용됩니다
다른 시스템에서는 /dev/urandom이 사용됩니다
-
그렇지 않으면 예외가 발생합니다
Exceptions
이 두 함수에도 발생하는 예외가 있습니다. 예를 들어 위에서 생성 소스를 찾을 수 없으면 예외가 발생합니다. 예외가 발생하는 다른 요인이 될 수도 있습니다.
적절한 무작위 소스가 발견되지 않으면 예외가 발생합니다
주어진 인수가 유효하지 않으면 TypeError가 발생합니다.
주어진 바이트 길이가 유효하지 않으면 오류가 발생합니다
요약
오늘의 내용은 매우 간단하고, Random_bytes() 함수의 유용성을 발견했습니다. 앞으로는 우리 사이의 비밀번호 솔팅에 관한 기사처럼 직접 무작위로 솔트를 생성하는 함수를 작성할 필요가 없습니다. "소금" 비밀번호? 사용자 비밀번호를 안전하게 "소금"하는 방법은 무엇입니까? 랜덤 문자 생성 기능(generateSalt)은 기본적으로 이것으로 대체 가능합니다. 많은 것을 얻었다고 느껴지지 않나요? 학습의 속도는 멈추지 않습니다. 계속해서 더 흥미로운 콘텐츠를 함께 살펴보세요! !
테스트 코드:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202007/source/PHP%E7%9A%84%E5%8A%A0%E5%AF%86%E4%BC%AA%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%94%9F%E6%88%90%E5%99%A8%E7%9A%84%E4%BD%BF%E7%94%A8.php
추천 학습: php 비디오 튜토리얼