【PHP、RSA】PHP web开发中RSA加密解密简单示例

一、Demo文档目录结构

RSAdemo -------- 根目录

                            |---------------- js文件夹(RSA library包括jsbn.js、prng4.js、rng.js、rsa.js四个文件)

                            |---------------- openssl文件夹(RSA密钥生成工具,基于openssl协议)            

                            |---------------- php文件夹(包含lib文件rsa.php和php解密部分代码rsa-example.html)

                            |---------------- phpCreateKey(php代码实现:根据pem密钥文件生成加密解密过程所需的参数)

                            |---------------- rsa-example.html(demo示例页面)

二、openssl协议生成RSA密钥文件

1.打开openssl客户端,路径:RSAdemo/openssl/bin/openssl.exe

2.参考openssl目录下说明文档中的命令,生成pem密钥文件。注意密钥文件生成在openssl/bin目录下

三、基于密钥文件生成密钥参数(用于JS加密函数和PHP解密函数)

1.复制第二步中生成的RSA私钥文件命名为key.pem并替换phpCreateKey目录下的key.pem示例文件

2.或者也可以修改<span style="font-family:SimSun; font-size:18px">phpCreateKey目录下的代码文件var.php,确保读取的RSA私钥文件正确!

3.直接请求var.php即返回需要的密钥参数

四、JS实现RSA加密

1.rsa-example.html实现了加密业务

2.需要引用js文件夹目录下的四个文件

3.加密实现代码:

<pre name="code" class="javascript">   <span style="font-size: 18px;">//RSA加密,需要的公钥和指数两个参数均是在第三步中生成 </span>

function do_encrypt() { var rsa = new RSAKey();//实例化RSA对象 rsa.setPublic(public_key, exponent); var res = rsa.encrypt(document.rsatest.plaintext.value); return res; }

4.运行示例

五、PHP实现RSA解密

1.rsa-example.php实现了加密业务

2.需要引入rsa.php文件

3.解密实现代码:

  <span style="font-family: Arial, Helvetica, sans-serif;">    //调用rsa_decrypt函数解密密文,注意解密的密文必须是二进制数据,而第三步中的JS加密结果是16进制数据 </span>

    $decrypted = rsa_decrypt($encrypted, $private, $modulus, $keylength);

4.运行示例

   

六、扩展

前面提到了,RSA算法广泛应用于非对称加密和数字签名!本文所使用的JS函数库和PHP函数库功能非常完善,这里只是使用了加密解密功能,我在后面也会继续深入学习。

1.JS部分使用了jsbn函数库,http://www-cs-students.stanford.edu/~tjw/jsbn/

2.PHP部分使用了phpseclib函数库,http://phpseclib.sourceforge.net

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值