이 기사에서는 PHP 대칭 암호화 및 암호 해독과 관련된 문제를 주로 소개합니다. 모두에게 도움이 되기를 바랍니다.
1. mcrypt 확장 또는 openssl 확장?
php7은 mcrypt 확장을 더 이상 사용하지 않으며 암호화 및 암호 해독에 openssl을 사용할 것을 권장합니다.
2, DES, 3DES, AES?
DES는 오래된 대칭 암호화 알고리즘입니다. 보안은 더 이상 현재 요구 사항을 충족하지 않으며 성능은 AES보다 나쁩니다.
3DES의 본질도 DES이지만 DES를 기반으로 3번 암호화됩니다. 기본적으로 위와 동일합니다. 기술을 선택할 때 이 두 가지 기밀 알고리즘을 피하십시오.
AES는 고급 암호화 표준입니다. (Advanced Encryption Standard) 현재 널리 사용되는 대칭 암호화 알고리즘입니다. AES는 매우 안전하고 성능이 뛰어납니다.
3. AES-128-X, AES-196-X 또는 AES-256-X?
128,196,256은 키 길이
128이 128비트 16바이트임을 의미합니다. 예: 1234123412341234
If 열쇠 16바이트를 초과하면 추가 부분은 바로 무시됩니다
4. 5가지 암호화 모드
ECB Electric CodeBook 电码本模式 CBC Cipher Block Chaining 密码分组链接模式
이 모드에는 ECB보다 안전한 벡터 값 iv가 필요합니다. [권장 학습: "PHP 비디오 튜토리얼》]
샘플 코드:
$my_method = 'aes-128-cbc'; //算法 $key = "1234567812345678"; //128bit秘钥 $data = "asxsaxasdlkasjdiqi"; //输入算法获取向量长度 $iv_length = openssl_cipher_iv_length( $my_method ); //根据长度获取向量 函数会给$cstrong赋bool值,判断是否使用了强加密算法,一般为true $iv = openssl_random_pseudo_bytes( $iv_length, $cstrong ); //加密 $enc_data = openssl_encrypt($data, $my_method, $key, OPENSSL_RAW_DATA, $iv); //解密 $dec_data = openssl_decrypt($enc_data, $my_method, $key, OPENSSL_RAW_DATA, $iv);
CFB Cipher FeedBack 密码反馈模式 OFB Output FeedBack 输出反馈模式 CTR Counter Mode 计算器模式
AES 알고리즘 사용을 의미하는 AES-128-ECB와 같은 동일한 알고리즘 하에서 다양한 블록 암호화 반복 모드, 비밀 키 길이는 128비트, 반복 방법은 ECB입니다. AES-128-ECB 알고리즘으로 암호화된 암호문은 AES-128-ECB
5로만 해독할 수 있습니다. 사용 가능한 암호화 방법을 확인하는 방법은 무엇입니까?
print_r(openssl_get_cipher_methods()); // Array ( [0] => aes-128-cbc ... [19] => aes-192-cbc ... [35] => aes-256-cbc ... [54] => aria-128-cbc ... [80] => aria-256-ofb [81] => camellia-128-cbc ... [102] => camellia-256-ctr ... [105] => chacha20 ... [107] => des-ede-cbc ... [116] => des-ede3-ofb [117] => des3-wrap [118] => null [119] => sm4-cbc )
위 내용은 PHP 대칭 암호화 및 복호화에 대한 5가지 질문과 답변의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!