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个问答小结的详细内容,更多请关注其它相关文章!