>  기사  >  백엔드 개발  >  PHP 대칭 암호화 및 복호화에 대한 5가지 질문과 답변

PHP 대칭 암호화 및 복호화에 대한 5가지 질문과 답변

藏色散人
藏色散人앞으로
2022-12-20 18:11:525413검색

이 기사에서는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제