この記事では、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 密码分组链接模式このモードにはベクトル値 iv が必要です。これは ECB よりも安全です [推奨学習: "
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-128-ECB など) は、AES アルゴリズムの使用を指し、秘密キーの長さは 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 中国語 Web サイトの他の関連記事を参照してください。