RSA加密解密-公鑰解密

技術(shù):jsencrypt.js
這個(gè)前端庫(kù)有一個(gè)特點(diǎn):公鑰加密、私鑰解密,沒(méi)有公鑰解密(只能前端公鑰加密后臺(tái)私鑰解密)
開(kāi)發(fā)中遇到的問(wèn)題:后端使用私鑰加密,前端需要使用公鑰進(jìn)行解密,返回的結(jié)果為false?
解決辦法:實(shí)現(xiàn)雙向加密,就是使用兩套秘鑰。
后端有兩對(duì)秘鑰:privateKeyA,publicKeyA,privateKeyB,publicKeyB(privateKey:私鑰 publicKey:公鑰)
后端拿著:privateKeyA,publicKeyB
前端拿著:publicKeyA,privateKeyB

前端加密時(shí)用publicKeyA,后端用privateKeyA解密
后端加密時(shí)用publicKeyB,前端用privateKeyB解密

這樣就能保證,雖然私鑰和公鑰都在前端代碼中,但是這兩個(gè)并不是一對(duì),就算是全部拿到,也無(wú)法成功解密。

前端代碼:

    /**
     * RSA解密
     */
    decryptRSA:str=>{
        let encryptor = new JSEncrypt(); // 新建JSEncrypt對(duì)象
        let privateKey = "privateKeyB";//后臺(tái)提供
        encryptor.setPrivateKey(privateKey);//設(shè)置私鑰
        let decrytStr = encryptor.decrypt(str);
        return decrytStr
    },
    /**
     * RSA加密
     */
    encryptRSA:str=>{
        let encryptor = new JSEncrypt(); // 新建JSEncrypt對(duì)象
        let publicKey = "publicKeyA";  //后臺(tái)提供
        encryptor.setPublicKey(publicKey); // 設(shè)置公鑰
        let rsaPassWord = encryptor.encrypt(str);
        return rsaPassWord;
    },
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容