RSA应用JS+PHP篇
来源:互联网 发布:捕鱼源码有哪些权限 编辑:程序博客网 时间:2024/04/30 04:53
在“RSA应用PHP篇”中我们了解到了RSA在PHP中的如何使用,但是实际的数据传输是“前端提交数据”——>“HTTP传输”——>“后端接收数据”,我们需要在数据进行HTTP传输前对数据进行加密,才能确保数据在传输过程中的安全性,因此我们需要借助于JavaScript,下面我们就来看下前后端结合的RSA的应用吧。
前端加密
虽然JavaScript没有默认的函数可以处理RSA,但是也无需我们手动书写,因为有大神们已经帮我们写好了,我们只需要下载应用就行,点此下载。我们需要下载的文件至少有四个,jsbn.js、prng4.js、rng.js和rsa.js,虽然主要使用的js是rsa,js,但是它们之间有依赖关系,所以需要下载四个,这些文件在下载页面都找的到。引入4个js之后,我们再书写以下代码:
var rsa = new RSAKey(); var n = "Modulus"; var e = "exponent"; rsa.setPublic(n,e); var res = rsa.encrypt('encrypt test');
代码十分简单,只有短短的5行,但是每行代码代表什么意思相信很多初学者都不是很明白,其实也很简单,第一行,自然是先new一个RSAKey对象,这个相信大家都容易理解,但是第二行和第三行的n和e又代表了什么呢?我们先来看n,这里的n指的是Modulus(模数),我们可以根据私钥计算出来该值,具体指令如下
rsa -in private_key.pem -noout -modulus这里的n需要的就是Modulus=后面的值了。
n知道了,那么e呢?还记得我们当初生成私钥的时候展示的那些信息了吗,其中有一行便有其中我们需要的e值。一般情况下e的取值是一个定值10001(十六进制)。
至此,我们就完成了前端的公钥加密,那么加密的数据是否真的能够被后端解密呢?
后端解密
通过前篇文章,相信对于PHP处理RSA都不会陌生了,PHP处理RSA还是十分简单的,当然如果接收来自前端的数据,还需要做些调整。
$private_key="私钥";$hex_encrypt_data="前端加密数据";//十六进制数据$encrypt_data = pack("H*",$hex_encrypt_data);//对十六进制数据进行转换openssl_private_decrypt($encrypt_data,$decrypt_data,$private_key);echo '解密后的数据'.$decrypt_data;
经过小编测试,由JavaScript加密的数据能够正确的被PHP解密。
注意事项
1.由上述js加密后的数据是十六进制,在后端进行私钥解密前需要对数据进行转换。
2.前端加密的时候如果是中文,则解密后是乱码。
2 0
- RSA应用JS+PHP篇
- RSA应用PHP篇
- php js rsa
- PHP JS RSA 加解密
- php,js RSA加解密密码
- rsa加解密,js加密,php解密
- php openssl rsa 加密解密应用
- php openssl rsa 加密解密应用
- JS到PHP使用RSA算法进行加密通讯
- RSA 加解密的例子,JS加密--php解密
- JS与PHP互通的RSA加解密
- RSA实现JS前端加密,PHP后端解密
- JS与PHP通过RSA加密传输密码
- RSA实现JS前端加密,PHP后端解密
- RSA实现JS前端加密,PHP后端解密
- json js与php应用
- javascrip php rsa 加密
- ios&php rsa
- iOS OC声明变量在@interface括号中与使用@property的区别
- java定时调度
- 常规游戏项目开发流程
- 将数组循环右移k位
- 利用Fiddler抓取安卓APP网络请求包
- RSA应用JS+PHP篇
- free buffer waits
- 项目中新学知识点整理
- Visual Assist X 10.8.2001 破解版 支持VC2013及以下版本
- python学习手册一:列表中的函数
- android 如何过滤掉listview中符合某个条件的item
- Python中文编码问题
- PHP中rawurlencode和urlencode、JS中encodeURI与encodeURIComponent 的区别
- Jmeter分布式测试