496 Stimmen

node.js-Hash-String?

Ich habe eine Zeichenfolge, die ich hashen möchte. Was ist der einfachste Weg, um den Hash in node.js zu generieren?

Der Hash dient der Versionskontrolle, nicht der Sicherheit.

0voto

batomaeus Punkte 158

Unter Berücksichtigung der Gedanken von http://www.thoughtcrime.org/blog/the-cryptographic-doom-principle/ (kurz gesagt: ERST verschlüsseln, DANN authentifizieren. Danach ERST verifizieren, DANN entschlüsseln) Ich habe die folgende Lösung in node.js implementiert:

function encrypt(text,password){
  var cipher = crypto.createCipher(algorithm,password)
  var crypted = cipher.update(text,'utf8','hex')
  crypted += cipher.final('hex');
  return crypted;
}

function decrypt(text,password){
  var decipher = crypto.createDecipher(algorithm,password)
  var dec = decipher.update(text,'hex','utf8')
  dec += decipher.final('utf8');
  return dec;
}

function hashText(text){
    var hash = crypto.createHash('md5').update(text).digest("hex");
    //console.log(hash); 
    return hash;
}

function encryptThenAuthenticate(plainText,pw)
{
    var encryptedText = encrypt(plainText,pw);
    var hash = hashText(encryptedText);
    return encryptedText+"$"+hash;
}
function VerifyThenDecrypt(encryptedAndAuthenticatedText,pw)
{
    var encryptedAndHashArray = encryptedAndAuthenticatedText.split("$");
    var encrypted = encryptedAndHashArray[0];
    var hash = encryptedAndHashArray[1];
    var hash2Compare = hashText(encrypted);
    if (hash === hash2Compare)
    {
        return decrypt(encrypted,pw); 
    }
}

Es kann mit getestet werden:

var doom = encryptThenAuthenticate("The encrypted text",user.cryptoPassword);
console.log(VerifyThenDecrypt(doom,user.cryptoPassword));

Ich hoffe, das hilft :-)

0voto

Können Sie krypto-js javaScript-Bibliothek der Krypto-Standards gibt es den einfachsten Weg, um die sha256 o sha512

const SHA256 = require("crypto-js/sha256");
const SHA512 = require("crypto-js/sha512");

let password = "hello"
let hash_256 = SHA256 (password).toString();
let hash_512 = SHA512 (password).toString();

-1voto

Maf Punkte 422

Auch wenn der Hash nicht der Sicherheit dient, können Sie sha anstelle von md5 verwenden. Meiner Meinung nach sollten die Leute md5 erst einmal vergessen, es gehört der Vergangenheit an!

Das normale nodejs sha256 ist veraltet. Sie haben also im Moment zwei Alternativen:

var shajs = require('sha.js')  - https://www.npmjs.com/package/sha.js (used by Browserify)

var hash = require('hash.js')  - https://github.com/indutny/hash.js

Ich bevorzuge die Verwendung von shajs anstelle von hash weil ich sha für die beste Hash-Funktion halte, die es derzeit gibt, und weil man im Moment keine andere Hash-Funktion braucht. Um also einen Hash in Hex zu erhalten, sollten Sie etwas wie das Folgende tun:

sha256.update('hello').digest('hex')

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X