使Javascript RSA消息加密给出相同的结果
Make Javascript RSA message encryption giving same result
你好,我正在使用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中相同的公钥的过程,并查看表中是否有匹配。
使用上面的脚本,即使我多次加密相同的电话号码,我也永远不会找到匹配,这就是为什么我希望在加密相同的电话号码时结果相同。欢迎提出任何意见。
提前感谢。
正如Greg在他的评论中所说,pkcs# 1填充中的随机性会导致每次加密的结果都不同。
根据您的用例,我建议您将电话号码的散列与加密数据一起存储。然后可以根据散列执行快速查找。您可能希望在散列之前对您的电话号码进行盐处理。
请记住,哈希不能保证是唯一的,所以有很小的可能性您会得到两个冲突的哈希
听起来像是您想要用您的私钥对消息进行签名,并让其他用您的公钥验证签名。您链接的库提供了RSASign和RSAVerify方法,可能在RSAKey
实例的sign
和verify
方法下。我不是JS程序员,所以我只能说这就是它的样子。
相关文章:
- 奇怪的Javascript结果
- Javascript(jQuery)给了我奇怪的结果
- 数组删除重复结果Javascript
- 比较数组中的连续元素不会返回任何结果(javascript)
- split(' ') 函数没有给出正确的结果 Javascript
- 如何产生结果Javascript嵌套缺陷
- I'm试图使用onclick函数显示函数的结果.(javascript)
- 计算结果Javascript中不同数字的数量
- 以 HTML 格式显示计算结果 (javascript)
- 没有得到预期的结果 - javascript
- 从函数返回结果 - JavaScript
- 在一行中返回来自三元的结果(JavaScript)
- 骰子效果-如何在最后显示假结果和真结果(JavaScript)
- WebGL纹理加载结果(Javascript)类型错误
- 限制搜索结果Javascript
- IF语句多个答案-相同的结果Javascript
- 双异步循环,如何保证正确排序顺序的最终结果?(javascript)
- 添加图像到测验结果javascript
- 奇怪的结果javascript比较
- 如何改变iFrame结果JavaScript警告框