详解PHP的Sodium加密扩展函数
sodium 扩展在 php7.2 后是跟随 php 源码一起发布的,只需要在编译的时候加上 --with-sodium 即可安装成功。如果是 php7.2 之前的版本,需要单独安装这个扩展。同时,操作系统中也需要安装 libsodium-devel 库。
aead_aes_256_gcm 加解密
首先是这个 aead_aes_256_gcm 加解密能力函数的应用。在微信支付相关的开发中,有一个接口就是使用的这种方式进行数据加密,在官方文档中,也提供了 php 对应的解密方式,其中使用的就是 sodium 扩展库中的函数。(见文末参考文档中第二条链接)
代码中的注释已经详细说明了相关函数及参数。在微信支付中使用这个来解密时,ad、key、nonce 等都是由微信提供过来的,而我们这里做为演示,都是自己生成的内容。
sodium_crypto_aead_aes256gcm_encrypt() 加密生成的内容也是二进制的内容,所以相对来说也是非常安全的一种加密形式。
信息签名
sodium 扩展库同样也为我们带来了验证数据是否被篡改的功能,也就是对信息进行签名比对的能力。
它们需要的就是一个简单的随机签名密钥,然后通过对签名摘要和原文进行比对来确定数据在传输过程中是否被篡改。
hash
是的,你没看错,sodium 扩展也为我们提供了一套 hash 加密的函数。不过它的使用要复杂一些,生成的内容有点像 密码散列算法 生成的内容。不过我们还是更推荐使用 密码散列算法 中的 password_hash() 来生成这类的 hash 密码。
总结
虽说我们平常可能没接触过,但是确实在开发中 sodium 扩展还是有实际应用的,既然微信都使用这种加密方式进行了数据加密,我们也应该对它有更深入的了解。不过,还是希望官方能够尽早完善文档,否则也无法系统地学习这套扩展里面的内容。
参考文档
参考文档:
以上就是详解php的sodium加密扩展函数的详细内容,更多关于php的sodium加密扩展函数的资料请关注其它相关文章!
上一篇: 庞涓既然已经与孙膑撕破脸皮,为何最后又没有杀掉他?
下一篇: vue实现秒杀倒计时组件
推荐阅读
-
2个比较经典的PHP加密解密函数分享_php实例
-
php如何使用crypt()函数进行加密的实例代码
-
基于php iconv函数的使用详解
-
PHP各版本的函数类型声明详解
-
PHP 使用 mcrypt 进行加密解密的函数
-
UCenter中的一个可逆加密函数authcode函数代码_php技巧
-
详解PHP中的mb_detect_encoding函数使用方法_php技巧
-
使用discuz的加密函数authcode来防刷票_PHP教程
-
PHP中的gzcompress、gzdeflate、gzencode函数详解
-
urlencode php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]