首页 » 网站建设 » phpsodium技巧_PHP的Sodium加密扩展函数理解

phpsodium技巧_PHP的Sodium加密扩展函数理解

duote123 2024-11-18 0

扫一扫用手机浏览

文章目录 [+]

Sodium 扩展在 PHP7.2 后是跟随 PHP 源码一起发布的,只须要在编译的时候加上 --with-sodium 即可安装成功。
如果是 PHP7.2 之前的版本,须要单独安装这个扩展。
同时,操作系统中也须要安装 libsodium-devel 库。

AEAD_AES_256_GCM 加解密

首先是这个 AEAD_AES_256_GCM 加解密能力函数的运用。
在微信支付干系的开拓中,有一个接口便是利用的这种办法进行数据加密,在官方文档中,也供应了 PHP 对应的解密办法,个中利用的便是 Sodium 扩展库中的函数。
(见文末参考文档中第二条链接)

phpsodium技巧_PHP的Sodium加密扩展函数理解

$data='测试加密';//原始数据$nonce=random_bytes(SODIUM_CRYPTO_AEAD_AES256GCM_NPUBBYTES);//加密证书的随机串,加密证书的随机串$ad='fullstackpm';//加密证书的随机串$kengen=sodium_crypto_aead_aes256gcm_keygen();//密钥//是否可用echosodium_crypto_aead_aes256gcm_is_available(),PHP_EOL;//1//加密$pem=sodium_crypto_aead_aes256gcm_encrypt($data,$ad,$nonce,$kengen);var_dump($pem);//string(28)"��VRw!�����f��l�O�tV=\x�"//解密$v=sodium_crypto_aead_aes256gcm_decrypt($pem,$ad,$nonce,$kengen);var_dump($v);//string(12)"测试加密"

代码中的注释已经详细解释了干系函数及参数。
在微信支付中利用这个来解密时,ad、key、nonce 等都是由微信供应过来的,而我们这里做为演示,都是自己天生的内容。

phpsodium技巧_PHP的Sodium加密扩展函数理解
(图片来自网络侵删)

sodium_crypto_aead_aes256gcm_encrypt() 加密天生的内容也是二进制的内容,以是相对来说也是非常安全的一种加密形式。

信息署名

Sodium 扩展库同样也为我们带来了验证数据是否被修改的功能,也便是对信息进行署名比对的能力。

//信息署名$key=sodium_crypto_auth_keygen();//天生随机署名密钥$message='测试认证署名';//天生署名$signature=sodium_crypto_auth($message,$key);var_dump($signature);//string(32)"�B�//9���l�wn�x���ӛc�ܙ�u^j��"//验证署名var_dump(sodium_crypto_auth_verify($signature,$message,$key));//bool(true)

它们须要的便是一个大略的随机署名密钥,然后通过对署名择要和原文进行比对来确定数据在传输过程中是否被修改。

Hash

是的,你没看错,Sodium 扩展也为我们供应了一套 Hash 加密的函数。
不过它的利用要繁芜一些,天生的内容有点像 密码散列算法 天生的内容。
不过我们还是更推举利用 密码散列算法 中的 password_hash() 来天生这类的 Hash 密码。

//Hash$password='测试Hash';$hash=sodium_crypto_pwhash_str($password,SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,//最大打算量SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE//最大RAM量);var_dump($hash);//string(97)"$argon2id$v=19$m=65536,t=2,p=1$VFfdNV4W0MFwLiLPdr9i6g$QDmd5sQToZANYTVEkPVTbPvbY7tuf1ALKU3IXrF44R0"//验证Hash信息var_dump(sodium_crypto_pwhash_str_verify($hash,$password));//bool(true)总结

虽说我们平常可能没打仗过,但是确实在开拓中 Sodium 扩展还是有实际运用的,既然微信都利用这种加密办法进行了数据加密,我们也该当对它有更深入的理解。
不过,还是希望官方能够尽早完善文档,否则也无法系统地学习这套扩展里面的内容。

测试代码:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202008/source/PHP%E7%9A%84Sodium%E5%8A%A0%E5%AF%86%E6%89%A9%E5%B1%95%E5%87%BD%E6%95%B0%E4%BA%86%E8%A7%A3.php

参考文档:

https://www.php.net/manual/en/book.sodium.php

https://pay.weixin.qq.com/wiki/doc/api/xiaowei.php?chapter=19_11

标签:

相关文章

介绍皮肤设置,如何打造理想肌肤状态

随着科技的发展和人们对美的追求,皮肤设置已成为美容护肤的重要一环。如何根据皮肤类型、肤质、年龄等因素进行合理设置,已成为众多爱美人...

网站建设 2025-01-03 阅读0 评论0

介绍盖章制作,传承文化,彰显权威

自古以来,盖章在我国文化中具有重要的地位。从古代的官印、私印到现代的公章、合同章,盖章已成为一种独特的文化符号,承载着丰富的历史内...

网站建设 2025-01-03 阅读0 评论0

介绍监控破坏,技术手段与法律风险并存

随着科技的飞速发展,监控设备已遍布大街小巷,成为维护社会治安的重要手段。一些不法分子为了逃避法律制裁,开始研究如何破坏监控设备。本...

网站建设 2025-01-03 阅读0 评论0

介绍登录不上之谜,技术故障还是人为疏忽

随着互联网的普及,登录已成为人们日常生活中不可或缺的一部分。在享受便捷的登录不上这一问题也困扰着许多用户。本文将深入剖析登录不上之...

网站建设 2025-01-03 阅读1 评论0

介绍电脑键盘调出方法,让操作更高效

随着科技的发展,电脑已经成为了我们日常生活中不可或缺的工具。而电脑键盘,作为电脑输入设备,更是我们与电脑进行交流的桥梁。你是否知道...

网站建设 2025-01-03 阅读0 评论0

介绍磁力链,高效便捷的文件下载利器

在互联网高速发展的今天,文件下载已成为日常生活中不可或缺的一部分。而磁力链作为一种新型的文件下载方式,凭借其高效、便捷的特点,受到...

网站建设 2025-01-03 阅读0 评论0