RSA非対称公開鍵および秘密鍵暗号化フロントエンドアプリケーション

RSA非対称公開鍵および秘密鍵暗号化フロントエンドアプリケーション

1.プロジェクトアプリケーションのシナリオ:

プロジェクトには機密性が含まれ、機密情報は通常、情報セキュリティを向上させるために暗号化されます。今日、プロジェクトマネージャーは、cmsバックグラウンド管理システムのパスワードをRSAで暗号化する必要があります。

2.関連する文書と説明

非対称暗号化では、暗号化と復号化に使用される鍵は同じ鍵ではありません。
一方のペアは外部に公開されて公開鍵と呼ばれ、
もう一方は所有者だけが知っている秘密鍵と呼ばれます。

 用公钥加密的信息只有私钥才能解开,反之,用私钥加密的信息只有公钥才能解开(签名验签)。
 代表:RSA算法。速度慢,适合少量数据加密。对称加密算法不能实现签名,因此签名只能非对称算法

3.コード

<!DOCTYPE html>
<html>
  <head>
    <title>RSA 非对称公私钥加密前端应用 </title>
    <script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
    <script src="http://passport.cnblogs.com/scripts/jsencrypt.min.js"></script>
       <!--注 如果需要此文件直接访问 粘贴下来就可以 -->
    <script type="text/javascript">
      $(function () {
     
     
        $("#testme").click(function () {
     
     
          var encrypt = new JSEncrypt();
          encrypt.setPublicKey($("#pubkey").val()); //设置公钥
         //此处设断点检查问题 AA
          var decrypt = new JSEncrypt();
          decrypt.setPrivateKey($("#privkey").val()); // 设置私钥
          var uncrypted = decrypt.decrypt(encrypted); //解密加密串

          // 检测是否解密成功
          if (uncrypted == $("#input").val()) {
     
     
            alert("解密成功");
          } else {
     
     
            alert("有问题,不能解析");
          }
        });
      });
    </script>
  </head>
  <body>
    <label for="privkey">私钥</label><br />
    <!-- 此处是你要检测的私钥串 -->
    <textarea id="privkey" rows="15" cols="65">
          -----BEGIN RSA PRIVATE KEY-----
          MIICXQIBAAKBgQDlOJu6TyygqxfWT7eLtGDwajtNFOb9I5XRb6khyfD1Yt3YiCgQ
          WMNW649887VGJiGr/L5i2osbl8C9+WJTeucF+S76xFxdU6jE0NQ+Z+zEdhUTooNR
          aY5nZiu5PgDB0ED/ZKBUSLKL7eibMxZtMlUDHjm4gwQco1KRMDSmXSMkDwIDAQAB
          AoGAfY9LpnuWK5Bs50UVep5c93SJdUi82u7yMx4iHFMc/Z2hfenfYEzu+57fI4fv
          xTQ//5DbzRR/XKb8ulNv6+CHyPF31xk7YOBfkGI8qjLoq06V+FyBfDSwL8KbLyeH
          m7KUZnLNQbk8yGLzB3iYKkRHlmUanQGaNMIJziWOkN+N9dECQQD0ONYRNZeuM8zd
          8XJTSdcIX4a3gy3GGCJxOzv16XHxD03GW6UNLmfPwenKu+cdrQeaqEixrCejXdAF
          z/7+BSMpAkEA8EaSOeP5Xr3ZrbiKzi6TGMwHMvC7HdJxaBJbVRfApFrE0/mPwmP5
          rN7QwjrMY+0+AbXcm8mRQyQ1+IGEembsdwJBAN6az8Rv7QnD/YBvi52POIlRSSIM
          V7SwWvSK4WSMnGb1ZBbhgdg57DXaspcwHsFV7hByQ5BvMtIduHcT14ECfcECQATe
          aTgjFnqE/lQ22Rk0eGaYO80cc643BXVGafNfd9fcvwBMnk0iGX0XRsOozVt5Azil
          psLBYuApa66NcVHJpCECQQDTjI2AQhFc1yRnCU/YgDnSpJVm1nASoRUnU8Jfm3Oz
          uku7JUXcVpt08DFSceCEX9unCuMcT72rAQlLpdZir876
          -----END RSA PRIVATE KEY-----</textarea
    ><br />
    <label for="pubkey">公钥</label><br />
    <!-- 此处是你要检测的公钥串 -->
    <textarea id="pubkey" rows="15" cols="65">
     -----BEGIN PUBLIC KEY-----
       MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlOJu6TyygqxfWT7eLtGDwajtNFOb9I5XRb6khyfD1Yt3YiCgQWMNW649887VGJiGr/L5i2osbl8C9  +WJTeucF+S76xFxdU6jE0NQ+Z+zEdhUTooNRaY5nZiu5PgDB0ED/ZKBUSLKL7eibMxZtMlUDHjm4gwQco1KRMDSmXSMkDwIDAQAB
    -----END PUBLIC KEY-----</textarea
    ><br />
    <label for="input">输入的文本:</label><br />
    <textarea id="input" name="input" type="text" rows="4" cols="70">
     This is a test!</textarea
    ><br />
    <input id="testme" type="button" value="Test Me!!!" /><br />
  </body>
</html>

5.注意が必要な事項

  1. フロントエンドが暗号化処理を実行しているときに、AAが公開鍵を設定した後、暗号化が誤っている場合があります。
    理由の分析:このステップは実際には公開鍵の正確性を伴わないため、設定プロセス中に、encryptobjectプロパティ内

ここに画像の説明を挿入
ここで、eは0で、bigIntergerオブジェクトは空であり、公開鍵が正常に設定されていないため、falseと表示されます。
ロードしたjsencrypt.min.jsが他のアイテムと競合していないかどうかを確認してください。base64.jsが原因です。プロジェクトにロードされると影響が
あります通常、公開鍵を設定するとオブジェクト文字列が表示されます

おすすめ

転載: blog.csdn.net/weixin_45176415/article/details/114498685