生成的JavaScript的RSA密钥对,基于密码(Generate RSA key pair in

2019-06-25 16:13发布

据我理解的基础上,(强)随机发生器的RSA密钥通常生成。

相反,我想基于密码来创建它们。

或者更确切地说,它的散列,例如SHA512(SHA512(密码+盐)+密码+辣椒)

这需要做的客户端,在JavaScript中。

有没有人知道如何做到这一点? 是否有基于给定输入创建RSA密钥对确定性,一个简单的JavaScript库?

(其实,我提到RSA但任何安全非对称加密就足够了,我只需要公私加密)


另外:我需要这个,因为我建立了一些安全的通信解决方案,并不需要依赖的连接,甚至在服务器上是安全的。

我使用随机密钥加密使用AES的所有内容,并键是RSA加密。 这个想法是爱丽丝能RSA加密她的内容(或实际上,她的内容AES密钥)与Bob的公钥(因此Bob的公钥必须在线存储)。

后来,当鲍勃再次进入他的密码,他的浏览器可以确定性地计算当场他的RSA私钥和公钥,请从爱丽丝的内容,并在本地使用自己的私钥解密。

Answer 1:

貌似Cryptico可以帮助你,当你给你的密码作为RNG种子。



Answer 2:

RSA密钥是最不喜欢的对称算法只是随机位,他们是从大的素数得出的指数和modulouses。 因此,我不认为你可以从一个密码生成它们的任何合理的方式。 见这个维基百科文章 。

你在使用这些密钥对的呢? 为什么一定要他们从一个口令导出? 如果你想使用密码来加密的东西,你可以使用SHA256(密码),以导出AES256密钥。 (请务必在阅读了重点加强 ,如果你要做到这一点)。



Answer 3:

我不能在我的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);


文章来源: Generate RSA key pair in javascript, based on a password