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

前言:RSA算法可以说是大名鼎鼎,广泛应用于非对称加密和数字签名认证!感兴趣的朋友完全可以深入的学习一下RSA算法并尝试代码实现,相信一定可以极大的提高代码能力,个人也是计划着要抽时间好好研究学习一下。本文的目的只是示例如何应用大神的代码实现前端JS层面的RSA加密和后端PHP层面的RSA解密,快速上手提高我们开发的Web系统的安全性和可靠性!


Demo下载地址:http://download.csdn.net/detail/jerrycqu/9229829


一、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


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值