2016-03-25 3 views
1

https://github.com/dchest/tweetnacl-js kommt mir sehr zu empfehlen.Wie verschlüsselt man einen geheimen Schlüssel mit einem Passwort mit tweetnacl-js?

Ich habe ein Projekt, wo das Team ihre Schlüsselpaare als Base64 auf einer ID codiert anzeigen möchte. Natürlich wollen sie nicht nur den geheimen Schlüssel anzeigen, sondern eine verschlüsselte Version davon speichern. So etwas wie ...

// do the encryption 
let keyPair = tweetnacl.sign.keyPair(); 
let publicKey = tweetnacl.util.encodeBase64(keyPair.publicKey); 
let signature = tweetnacl.util.encodeBase64(tweetnacl.sign.detached(tweetnacl.util.decodeUTF8(certData), keyPair.secretKey)); 
let secretKey = tweetnacl.util.encodeBase64(keyPair.secretKey); 
let encryptedSecretKey = CryptoJS.AES.encrypt(secretKey, this.props.data.password).toString(); 

Ich wurde von der Verwendung von CryptoJS abgeraten. Gibt es eine bessere Möglichkeit, dies nur mit Tweetnacl zu tun?

Danke.

+2

Ich hoffe, Sie wurden [von Cryptos in JS] abgeraten (https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2011/august/javascript-cryptography-conspired-) schädlich /) anstelle dieser bestimmten Umsetzung. Auch Ihr Link sagt ** Beta-Version. Die Bibliothek ist stabil und die API ist eingefroren, wurde jedoch nicht unabhängig überprüft. **. Vielleicht möchten Sie hier viel überdenken. – SmokeDispenser

+0

Dies scheint eine Frage für Tweetnacl zu sein – schroeder

Antwort

0

tweetnacl hat eine symmetrische Verschlüsselungsimplementierung namens secretbox. Sie können alles, was Sie möchten, wie AES verschlüsseln, einschließlich Ihres geheimen Schlüssels.

Pseudocode:

var smkey = stringToUint8Array(keystring); // must be 32 bytes, pad it if you have to 
var nonce = nacl.randomBytes(nacl.box.nonceLength); 
var encryptedSecretKey = nacl.secretbox(secretKey, nonce, smkey); 

Dann können Sie die verschlüsselten Uint8Array bespannen oder Base64 konvertieren und diese verwenden.

Verwandte Themen