2

您好,我正在使用 javascript RSA 加密过程并且它正在工作:

<!DOCTYPE html>
    <html lang="en">
            <head>
            <title></title>
              <script src="jquery-1.7.2.min.js" type="text/javascript"></script>
              <script type="text/javascript" src="base64.js"></script>
              <script type="text/javascript" src="asn1.js"></script>
              <script type="text/javascript" src="jsbn.js"></script>
              <script type="text/javascript" src="prng4.js"></script>
              <script type="text/javascript" src="rng.js"></script>
              <script type="text/javascript" src="rsa.js"></script>
              <script type="text/javascript" src="pemconvert.js"></script>
              <script>
                    function loadpubKey(){
                            var pubkey = "-----BEGIN PUBLIC KEY-----\nMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAPBYvSszUjI5psKM958bHTDb+9NONv3X\nWVIGLR9/Al4j8/mqSDMhwFuu9oEyXl80+Ga2cohEQPpWyxzg3/tfGDUCAwEAAQ==\n-----END PUBLIC KEY-----";
                            $("#publicKey").html(pubkey);
                        }
                    function RSAEncryptData()
                        {
                            var Message = $("#Message_to_Encrypt").val();
                            var pubkey = pem_import($("#publicKey").val());             
                            $("#RSAMessageEncrypted").html(pubkey.encrypt(Message));
                        }
            </script>
            </head>
        <body onload="loadpubKey();">
        <h1>RSA Encryption/Decryption using library From :https://github.com/tao-software/jsrsa</h1>
        <form>
                <strong>Public key         :</strong> <textarea rows="3" cols="100"  id="publicKey"></textarea><br>
                <strong>Message to RSA encrypt :</strong> <textarea rows="3" cols="100"  id="Message_to_Encrypt"></textarea><br>
                <input type="button" value="RSA Encrypt" onclick="RSAEncryptData();">
                <strong>RSA encrypted Message :</strong> <textarea rows="3" cols="100"  id="RSAMessageEncrypted"></textarea><br>
        </form> 
        </body>
    </html>

每次我使用相同的消息进行加密点击“加密”按钮时,我都会得到一个新的不同加密值。我该怎么做才能使这种加密为使用的相同消息提供相同的加密结果?

实际上我想要做的是使用 RSA 用公钥加密一些电话号码,然后将它们存储在一个表中,然后我将加密任何电话号码,我将在 RSA 中使用相同的公钥通过一个过程并查看如果有匹配的表。

使用上面的脚本,即使我多次加密同一个电话号码,我也永远找不到匹配项,这就是为什么我希望在加密同一个电话号码时结果相同。欢迎任何想法。

先感谢您。

4

2 回答 2

1

正如 Greg 在他的评论中所说,PKCS #1 填充中的随机性将导致您的加密结果每次都不同。

根据您的用例,我建议您将电话号码的哈希值与加密数据一起存储。然后,您可以根据哈希执行快速查找。您可能希望在散列之前对您的电话号码加盐。

请记住,哈希值不能保证是唯一的,因此您会得到两个冲突的哈希值的可能性很小。

于 2013-01-21T11:20:48.200 回答
-1

听起来你想用你的私钥签署一条消息,并让其他人用你的公钥验证签名。您链接的库提供了 RSASign 和 RSAVerify 方法,可能在实例的signverify方法RSAKey下。我不是 JS 程序员,所以我只能说这就是它的样子。

于 2013-01-20T19:34:13.877 回答