据我理解的基础上,(强)随机发生器的RSA密钥通常生成。
相反,我想基于密码来创建它们。
或者更确切地说,它的散列,例如SHA512(SHA512(密码+盐)+密码+辣椒)
这需要做的客户端,在JavaScript中。
有没有人知道如何做到这一点? 是否有基于给定输入创建RSA密钥对确定性,一个简单的JavaScript库?
(其实,我提到RSA但任何安全非对称加密就足够了,我只需要公私加密)
另外:我需要这个,因为我建立了一些安全的通信解决方案,并不需要依赖的连接,甚至在服务器上是安全的。
我使用随机密钥加密使用AES的所有内容,并键是RSA加密。 这个想法是爱丽丝能RSA加密她的内容(或实际上,她的内容AES密钥)与Bob的公钥(因此Bob的公钥必须在线存储)。
后来,当鲍勃再次进入他的密码,他的浏览器可以确定性地计算当场他的RSA私钥和公钥,请从爱丽丝的内容,并在本地使用自己的私钥解密。
貌似Cryptico可以帮助你,当你给你的密码作为RNG种子。
RSA密钥是最不喜欢的对称算法只是随机位,他们是从大的素数得出的指数和modulouses。 因此,我不认为你可以从一个密码生成它们的任何合理的方式。 见这个维基百科文章 。
你在使用这些密钥对的呢? 为什么一定要他们从一个口令导出? 如果你想使用密码来加密的东西,你可以使用SHA256(密码),以导出AES256密钥。 (请务必在阅读了重点加强 ,如果你要做到这一点)。
我不能在我的punctuationbut发表评论,但更多的是什么,他说+ Eugene_Mayevski_'EldoS
JavaScript的纯: https://www.npmjs.com/package/cryptico
为的NodeJS: https://www.npmjs.com/package/cryptico您需要:
npm install cryptico
而加入这一行:
var cryptico = require("cryptico");
创建对象:
function cryptoObj(passPhrase)
{
this.bits = 1024; //2048;
this.passPhrase = passPhrase;
this.rsaKey = cryptico.generateRSAKey(this.passPhrase,this.bits);
this.rsaPublicKey = cryptico.publicKeyString(this.rsaKey);
this.encrypt = function(message){
var result = cryptico.encrypt(message,this.rsaPublicKey);
return result.cipher;
};
this.decrypt = function(message){
var result = cryptico.decrypt(message, this.rsaKey);
return result.plaintext;
};
}
console.log('---------------------------------------------------------');
var localEncryptor = new cryptoObj("XXyour secret txt or number hereXX");
var encryptedMessage = localEncryptor.encrypt('new message or json code here');
var decryptedMessage = localEncryptor.decrypt(encryptedMessage);
console.log('');
console.log('>>> Encrypted Message: '+encryptedMessage);
console.log('');
console.log('>>> Decrypted Message: '+decryptedMessage);