PHP 의 Sodium 암호 화 확장 함수

Sodium 확장 은 PHP 7.2 이후 PHP 소스 코드 와 함께 발 표 됩 니 다.컴 파일 할 때--with-sodium 만 추가 하면 설치 할 수 있 습 니 다.PHP 7.2 이전 버 전이 라면 이 확장 자 를 따로 설치 해 야 합 니 다.또한 운영 체제 에 도 libsodium-devel 라 이브 러 리 를 설치 해 야 합 니 다.
AEAD_AES_256_GCM 복호화
우선 이 AEADAES_256_GCM 복호화 능력 함수 적용.위 챗 결제 와 관련 된 개발 에서 하나의 인 터 페 이 스 는 바로 이러한 방식 으로 데이터 암호 화 를 하 는 것 이다.공식 문서 에서 도 PHP 에 대응 하 는 복호화 방식 을 제공 하 는데 그 중에서 Sodium 확장 라 이브 러 리 의 함수(마지막 참조 문서 의 두 번 째 링크 참조)

$data = '    '; //     
$nonce = random_bytes(SODIUM_CRYPTO_AEAD_AES256GCM_NPUBBYTES); //         ,        
$ad = 'fullstackpm'; //         
$kengen = sodium_crypto_aead_aes256gcm_keygen(); //   

//     
echo sodium_crypto_aead_aes256gcm_is_available(), PHP_EOL; // 1

//   
$pem = sodium_crypto_aead_aes256gcm_encrypt($data, $ad, $nonce, $kengen);
var_dump($pem);
// string(28) "��VRw!�����f��l�O�tV=\x�"

//   
$v = sodium_crypto_aead_aes256gcm_decrypt($pem, $ad, $nonce, $kengen);
var_dump($v);
// string(12) "    "
코드 의 주석 은 관련 함수 와 파 라 메 터 를 상세 하 게 설명 했다.위 챗 결제 에서 이 를 사용 하여 비밀 을 풀 때 ad,key,nonce 등 은 모두 위 챗 에서 제공 되 었 고 우 리 는 프레젠테이션 으로 자신 이 만 든 내용 입 니 다.
sodium_crypto_aead_aes256gcm_encrypt()암호 화 생 성 된 내용 도 바 이 너 리 내용 이기 때문에 상대 적 으로 매우 안전 한 암호 화 형식 이다.
정보 서명
Sodium 확장 라 이브 러 리 역시 데이터 가 변경 되 었 는 지 검증 하 는 기능 을 가 져 왔 습 니 다.즉,정 보 를 서명 하고 비교 하 는 능력 입 니 다.

//     
$key = sodium_crypto_auth_keygen(); //         
$message = '      ';

//     
$signature = sodium_crypto_auth($message, $key);
var_dump($signature);
// string(32) "�B�
//                9���l�wn�x���ӛc�ܙ�u^j��"

//     
var_dump(sodium_crypto_auth_verify($signature, $message, $key));
// bool(true)
간단 한 무 작위 서명 키 가 필요 합 니 다.그리고 서명 요약 과 원문 을 비교 하여 데이터 가 전송 과정 에서 변경 되 었 는 지 확인 합 니 다.
Hash
네,잘못 보지 않 았 습 니 다.Sodium 확장 도 우리 에 게 Hash 암호 화 함 수 를 제공 합 니 다.그러나 그것 의 사용 은 좀 복잡 해 야 한다.생 성 된 내용 은 암호 산열 알고리즘 이 생 성 한 내용 과 비슷 하 다.그래도 암호 해시 알고리즘 중의 password 를 사용 하 는 것 을 추천 합 니 다.hash()는 이러한 Hash 암 호 를 생 성 합 니 다.

// Hash
$password = '  Hash';
$hash = sodium_crypto_pwhash_str(
    $password,
    SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE, //      
    SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE //   RAM 
);
var_dump($hash);
// string(97) "$argon2id$v=19$m=65536,t=2,p=1$VFfdNV4W0MFwLiLPdr9i6g$QDmd5sQToZANYTVEkPVTbPvbY7tuf1ALKU3IXrF44R0"

//    Hash   
var_dump(sodium_crypto_pwhash_str_verify($hash, $password));
// bool(true)
총결산
비록 우리 가 평소에 접촉 한 적 이 없 을 수도 있 지만 개발 과정 에서 Sodium 확장 은 실제 적 으로 응용 되 었 다.위 챗 이 모두 이런 암호 화 방식 으로 데이터 암호 화 를 했 으 니 우 리 는 이 를 더욱 깊이 이해 해 야 한다.그러나 정부 가 가능 한 한 빨리 문 서 를 보완 하 기 를 바란다.그렇지 않 으 면 이 확장 안의 내용 을 체계적으로 배 울 수 없다.
테스트 코드:
참고 문서
참고 문서:
https://www.php.net/manual/en/book.sodium.php
https://pay.weixin.qq.com/wiki/doc/api/xiaowei.php?chapter=19_11
이상 은 PHP 의 Sodium 암호 화 확장 함수 에 대한 상세 한 내용 입 니 다.PHP 의 Sodium 암호 화 확장 함수 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기