什么是 RSA 非对称加密
- 乙方生成一对密钥(公钥与私钥),并将公钥向甲方公开
- 甲方获取到公钥后,将需要传输的数据用公钥进行加密发送给乙方
- 乙方获取到甲方加密数据后,用私钥进行解密
在数据传输过程中,即使数据被攻击者截取并获取了公钥,攻击者也无法* 破解密文,因为只有乙方的私钥才能解密
准备一对公私秘钥
- 在线生成工具
- keytool
前端加密核心代码
关键:encodeURI(str).replace(/+/g, '%2B')
+号的处理:因为数据在网络上传输时,非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,而base64编码在传输到后端的时候,+会变成空格,因此先替换掉。后端再替换回来
var encrypt = new JSEncrypt(); encrypt.setPublicKey('MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDO5hYr37o95clKDRoMIpFHw1sbh078PoTgRMuHprYnVYzpCMevKoc/q5R8HA2wTrheTfAZoA8jX4KYsUbUFa/2+9ADVmH2WtPwN8VP7NX7WO+kGP+tGtnE+55rvatZVfUza+0+N2WqYSvioFlS99nU6nFSIBaqUU6SR0CgaG4oowIDAQAB');
encodeURI(encrypt.encrypt($('#txtcontact').val())).replace(/\+/g, '%2B')
后端解密核心代码
$txtname = "jhi78KJV73x6Ej8DoVSQmzLVqBQtDlLsGjRbVUhqlcR78tPBPDD%2BsAvPRIa8oYsK3Fx8CfAMBcUu5Rqk5xn0tOKqW5frCcMUU7dqJEqsPKwhg%2BvYIAr5e5dwToVmzee2jecUHruMZK20m%2BCx%2BC/bXFvbwaDm5Cwgnw9%2BV4LT0pI=";
$txtname = str_replace('%2B','+',$txtname);
$txtname = base64_decode($txtname);
发表评论 取消回复