rsa的js加密和php解密
群里的同志需要的前端js加密,后端php解密的实例
开始说明
后面有一个实例
javascript加密
引入相关的js库
jsbn.js ,
prng4.js ,
rng4.js ,
rsa.js ,
base64.js
他们的远程目录为: http://www-cs-students.stanford.edu/~tjw/jsbn/
前端代码:1
2
3
4
5<script src="http://www-cs-students.stanford.edu/~tjw/jsbn/jsbn.js"></script>
<script src="http://www-cs-students.stanford.edu/~tjw/jsbn/prng4.js"></script>
<script src="http://www-cs-students.stanford.edu/~tjw/jsbn/rng.js"></script>
<script src="http://www-cs-students.stanford.edu/~tjw/jsbn/rsa.js"></script>
<script src="http://www-cs-students.stanford.edu/~tjw/jsbn/base64.js"></script>
本 blog 也拷贝了这几个库,网址的目录为: http://blog.lopy.win/assets/rsa/ ,将几个文件名加在后面就可以了。
github地址:https://github.com/uljjmhn520/uljjmhn520.github.io/tree/master/assets/rsa
1 | <!-- jquery 方便dom操作 --> |
test —————–
test —————– end
js代码第一部分
1 | //创建一个rsa类,只有一个加密方法,构造函数为公钥中的 n 和 e 也就是模和指数。 |
js代码第二部分
1 | //n和e为rsa的模和指数,他们的值是从密钥对中获得的,后文会给出php 中获取的方法 |
php解密
私钥
解密用的私钥,与加密用的公钥为一对。
密钥对用php函数 openssl_pkey_new 和 openssl_pkey_export 生成;公钥可用已存在的私钥生成,后文中会介绍
以下为某一个私钥
1 | -----BEGIN PRIVATE KEY----- |
php代码部分
1 | // 上文中的私钥 |
一些说明
官方说明
php的openssl 扩展官网 点击进入
创建密钥对
1 | $ssl = openssl_pkey_new([]); |
提取私钥
1 | openssl_pkey_export($res, $privKey); |
获取detail,包括公钥、模、指数等信息
方式一,从密钥对里面提取
1 | //获取detail |
方式二,从私钥里提取
1 | //获取detail |
方式三,从公钥里提取
1 | //$publicKey 为方式一中提取的 publicKey |
解密
1 | // $encoded 为已被加密的密文 |
完整的实例
说明
以下内容基于 phalcon 的 controller ,如果你没有使用phalcon,可能会修改一部分代码
controller里面有三个action
index:html 页面,包括js加密部分
decode:php 解密部分,接收post数据,与页面index 的ajax交互
create:展示了创建密钥对
1 |
|