什么是 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);
点赞(0)

评论列表 共有 0 评论

暂无评论