【发布时间】:2012-06-24 18:10:10
【问题描述】:
据我了解,RSA 密钥通常是基于(强)随机生成器生成的。
相反,我想根据密码创建它们。
或者更确切地说是在其哈希上,例如 sha512(sha512(password+salt)+password+pepper)
这需要在客户端用 JavaScript 完成。
有人知道怎么做吗?是否有一个简单的 JavaScript 库可以根据给定的输入确定性地创建 RSA 密钥对?
(实际上,我说的是 RSA,但任何安全的非对称加密就足够了,我只需要公私加密)
补充:我需要这个,因为我正在构建一些安全的通信解决方案,它不需要依赖连接甚至服务器来保证安全。
我正在使用随机密钥使用 AES 加密所有内容,并且这些密钥是 RSA 加密的。这个想法是 Alice 可以使用 Bob 的公钥对她的内容(或者实际上是她的内容的 AES 密钥)进行 RSA 加密(因此 Bob 的公钥必须在线存储)。
稍后,当 Bob 再次输入他的密码时,他的浏览器可以当场确定性地计算他的 RSA 私钥和公钥,从 Alice 下载内容,并使用他的私钥在本地解密。
【问题讨论】:
-
使用 JavaScript 创建 RSA 密钥?我记得自己试过。它吞噬了我所有的记忆,并花了很长时间来计算。然后我切换到Java。
-
RSA 以外的非对称加密方案也可以。但是我需要在客户端生成密钥,并在发送之前加密数据(使用私钥)。公钥将存储在服务器端。不知道ECC方法是否更快?
-
@SheldonPinkman 加密是使用公钥而不是私钥完成的。因此你的想法是有缺陷的。
-
@Eugene:对不起,你是对的,我的意思是用公钥加密,我正在在线存储公钥+加密内容。用户实际上会使用彼此的公钥加密内容。
-
请注意这个关于在 javascript 中进行加密的警告 -> stackoverflow.com/a/10553576/993133
标签: javascript security cryptography rsa key-generator