Maison >développement back-end >tutoriel php >5 questions et réponses sur le chiffrement et le décryptage symétrique PHP

5 questions et réponses sur le chiffrement et le décryptage symétrique PHP

藏色散人
藏色散人avant
2022-12-20 18:11:525517parcourir

Cet article vous apporte des connaissances pertinentes sur PHP. Il présente principalement les problèmes liés au cryptage et au déchiffrement symétriques PHP. Examinons-les ensemble. J'espère que cela sera utile à tout le monde.

1. extension mcrypt ou extension openssl ?

php7 a rendu obsolète l'extension mcrypt et recommande d'utiliser openssl pour le cryptage et le déchiffrement

2, DES, 3DES, AES ?

DES est un algorithme de cryptage symétrique plus ancien. Sa sécurité ne répond plus aux besoins actuels et ses performances sont moins bonnes qu'AES.

L'essence de 3DES est également DES, mais il est crypté trois fois sur la base de DES. Lors de la sélection de la technologie, essayez d'éviter ces deux algorithmes confidentiels.

AES est une norme de cryptage avancée. (Advanced Encryption Standard), qui est un algorithme de chiffrement symétrique actuellement largement utilisé. AES est très sécurisé et offre des performances élevées.

3. AES-128-X, AES-196-X ou AES-256-X ?

128,196,256 signifie que la longueur de la clé

128 est de 128 bits 16 octets, comme cette clé : 1234123412341234

Si la clé dépasse 16 octets, la partie supplémentaire sera ignorée directement

4. Cinq modes de cryptage

ECB Electric CodeBook  电码本模式
CBC Cipher Block Chaining 密码分组链接模式

Ce mode nécessite une valeur vectorielle iv, qui est plus sécurisée que ECB [Apprentissage recommandé : "Tutoriel vidéo PHP》]

Exemple de code :

$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 计算器模式

Différents modes d'itération de cryptage par blocs sous le même algorithme, tels que AES-128-ECB, qui fait référence à l'utilisation de l'algorithme AES, la clé secrète a une longueur de 128 bits et la méthode d'itération est ECB. Utilisation Le texte chiffré par l'algorithme AES-128-ECB ne peut être déchiffré que par AES-128-ECB

5 Comment vérifier les méthodes de cryptage disponibles ?

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
)
.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer