この記事では、PHP に関する関連知識を紹介します。主に PHP の対称暗号化と復号化に関連する問題を紹介します。よくある質問が 5 つあります。一緒に見てみましょう。皆さんのお役に立てれば幸いです。
1. mcrypt 拡張子または openssl 拡張子?
php7 は mcrypt 拡張機能を非推奨にし、暗号化と復号化には openssl を使用することを推奨します
2、DES、3DES、AES?
DES古い対称暗号化アルゴリズムです。そのセキュリティはもはや現在のニーズを満たしておらず、そのパフォーマンスは AES よりも劣っています。
##3DES の本質も DES ですが、DES に基づいて 3 回暗号化されています。基本的には上記と同じです。技術を選択するときは、この 2 つの機密アルゴリズムを避けるようにしてくださいAES は Advanced Encryption Standard (Advanced Encryption Standard) であり、現在広く使用されている対称暗号化アルゴリズムです。 AES は非常に安全で、高いパフォーマンスを備えています。3. AES-128-X、AES-196-X、または AES-256-X?
128,196,256 はキーの長さを意味します128は 128 ビット 16 バイトで、次のキーのようになります: 1234123412341234キーが 16 バイトを超える場合、余分な部分は直接無視されます4. 5 種類の暗号化モード
ECB Electric CodeBook 电码本模式 CBC Cipher Block Chaining 密码分组链接模式
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 计算器模式
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 中国語 Web サイトの他の関連記事を参照してください。