本篇文章為大家帶來了關於PHP的相關知識,其中主要介紹了有關php對稱加解密的相關問題,共有5個常見問題,下面一起來看一下,希望對大家有幫助。
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就是128bit 16個位元組,比如這個密鑰:1234123412341234
如果密鑰超出16位元組後面多餘的部分會被直接無視
4、五種加密模式
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演算法,秘鑰是128bit長度,迭代方式是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中文網其他相關文章!