ホームページ  >  記事  >  バックエンド開発  >  PHP の対称暗号化と復号化に関する 5 つの質問と回答

PHP の対称暗号化と復号化に関する 5 つの質問と回答

藏色散人
藏色散人転載
2022-12-20 18:11:525470ブラウズ

この記事では、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 サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。