网页抓取解密(PHPbuild_js生成RAS.js和rsa加密解密生成 )
优采云 发布时间: 2021-10-18 12:15网页抓取解密(PHPbuild_js生成RAS.js和rsa加密解密生成
)
RSA加密传输密钥项目介绍(JS-PHP)
在web表单提交中,如果直接使用明文传输,尤其是用户密码,信息很容易被数据包捕获。这里以AJAX向PHP后端提交数据为例,使用RSA对表单数据进行加密传输。
RSA 简介 RSA 公钥加密算法是由 Ron Rivest、Adi Shamirh 和 LenAdleman(美国麻省理工学院)于 1977 年开发的。RSA这个名字来源于他们三人名字的发展。RSA 是目前影响最大的公钥加密算法。它可以抵抗迄今为止已知的所有密码攻击,并已被 ISO 推荐为公钥数据加密标准。目前,这种加密方式广泛应用于网上银行、数字签名等场合。RSA算法基于数论的一个非常简单的事实:两个大素数相乘很容易,但当时的乘积却极难因式分解,因此该乘积可以作为加密密钥公开使用。算法核心
RSA的算法涉及三个参数,n、e1、e2。
其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。
e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。
(n,e1),(n,e2)就是密钥对。其中(n,e1)为公钥,(n,e2)为私钥。[1]
RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e2 mod n;B=A^e1 mod n;(公钥加密体制中,一般用公钥加密,私钥解密)
e1和e2可以互换使用,即:
A=B^e1 mod n;B=A^e2 mod n;
实现过程客户端公钥加密服务器私钥解密
这里使用支付宝提供一键生成工具,方便开发者生成一对RSA密钥。门户下载安装后,按照里面的教程,生成一组公私钥。目录结构如下:
以上使用支付宝RSA生成工具的方法容易导致PHP无法识别密钥,这里是Openssl自动生成的,参考:PHP RSA加解密
生成以下文件:
rsa_private_key.pem //私钥文件
rsa_public_key.pem //公钥文件
rsa_private_key_pkcs8.pem //暂时用不上
运行 build_js.php 生成 RAS.js
(将build_js.php和生成的rsa_public_key.pem放在同一个目录下,然后命令行php build_js.php)
function f() {
var username = $("#inputText1").val();
var pswd = $("#inputText2").val();
$.ajax({
url:'json_test.php',
data:{"username":rsa_encode(username), "pswd":rsa_encode(pswd)},
type:'post',
success: function(data){
alert(data);
window.location.reload()
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
},
});
}
显示结果