RSA加密解密-公钥解密

2019-10-15  本文已影响0人  奋起的小菜鸟

技术:jsencrypt.js
这个前端库有一个特点:公钥加密、私钥解密,没有公钥解密(只能前端公钥加密后台私钥解密)
开发中遇到的问题:后端使用私钥加密,前端需要使用公钥进行解密,返回的结果为false?
解决办法:实现双向加密,就是使用两套秘钥。
后端有两对秘钥:privateKeyA,publicKeyA,privateKeyB,publicKeyB(privateKey:私钥 publicKey:公钥)
后端拿着:privateKeyA,publicKeyB
前端拿着:publicKeyA,privateKeyB

前端加密时用publicKeyA,后端用privateKeyA解密
后端加密时用publicKeyB,前端用privateKeyB解密

这样就能保证,虽然私钥和公钥都在前端代码中,但是这两个并不是一对,就算是全部拿到,也无法成功解密。

前端代码:

    /**
     * RSA解密
     */
    decryptRSA:str=>{
        let encryptor = new JSEncrypt(); // 新建JSEncrypt对象
        let privateKey = "privateKeyB";//后台提供
        encryptor.setPrivateKey(privateKey);//设置私钥
        let decrytStr = encryptor.decrypt(str);
        return decrytStr
    },
    /**
     * RSA加密
     */
    encryptRSA:str=>{
        let encryptor = new JSEncrypt(); // 新建JSEncrypt对象
        let publicKey = "publicKeyA";  //后台提供
        encryptor.setPublicKey(publicKey); // 设置公钥
        let rsaPassWord = encryptor.encrypt(str);
        return rsaPassWord;
    },
上一篇 下一篇

猜你喜欢

热点阅读