项目要和第三方进行接口对接,所以数据的安全很重要。第一次自己设计并实现,学习记录下
网上查了很多资料,真的很深奥
对称加密:
双方共用一个约定好的密钥进行数据的加密和解密,但是当密匙丢失,数据将有泄露风险。
实例:
$input_str = '阿达854aa'; echo '被加密的字符串:'.$input_str.'<br>'; $key = '159'; $iv = '1234567812345678';//须是16位 $encrypted = openssl_encrypt($input_str, 'aes-128-cbc', $key, OPENSSL_RAW_DATA, $iv); echo '加密后的字符串:'.$encrypted.'<br>'; $data = base64_encode($encrypted); echo '加密编码后的字符串:'.$data.'<br>'; $de_data = base64_decode($data); echo '加密解码后的字符串:'.$de_data.'<br>'; $decrypted = openssl_decrypt($de_data, 'aes-128-cbc', $key, OPENSSL_RAW_DATA, $iv); echo '解密后的字符串:'.$decrypted.'<br>';
输出:
被加密的字符串:阿达854aa 加密后的字符串:���=8�++�-��� 加密编码后的字符串:qqT4PTiJKyv/LRmng4UGBA== 加密解码后的字符串:���=8�++�-��� 解密后的字符串:阿达854aa
其中:
‘aes-128-cbc’是一种加密方法,可以使用openssl_get_cipher_methods()获取到。$key加密密钥,须和解密密钥一致。$iv密码初始化向量(16位)。
非对称加密:
即双方使用不一样的密钥进行加密、解密,也就是公钥、私钥。届时,私钥加密的数据公钥可以解密。但是,公钥加密的数据只有私钥才可以解密。所以只要私钥保存完好,公钥丢失也不会影响数据的安全性。这种方式在网站上很常见,例如https传输
先这样吧,将项目搞起来,以后再研究吧。先知道原理就可以了,至于具体怎么实现的,哈哈,不懂不懂,有心学但没那个力啊,深奥深奥