Jak już zostało powiedziane przez CodesInChaos, HMAC z SHA256 może być używany tylko do mieszania wartości, która jest tylko w jedną stronę. Jeśli chcesz mieć możliwość szyfrowania/odszyfrowywania, będziesz musiał użyć szyfru, takiego jak aes
lub .
przykład jak szyfrowanie/deszyfrowanie:
const crypto = require("crypto");
// key and iv
var key = crypto.createHash("sha256").update("OMGCAT!", "ascii").digest();
var iv = "123456789";
// this is the string we want to encrypt/decrypt
var secret = "ermagherd";
console.log("Initial: %s", secret);
// create a aes256 cipher based on our password
var cipher = crypto.createCipheriv("aes-256-cbc", key, iv);
// update the cipher with our secret string
cipher.update(secret, "ascii");
// save the encryption as base64-encoded
var encrypted = cipher.final("base64");
console.log("Encrypted: %s", encrypted);
// create a aes267 decipher based on our password
var decipher = crypto.createDecipheriv("aes-256-cbc", key, iv);
// update the decipher with our encrypted string
decipher.update(encrypted, "base64");
console.log("Decrypted: %s", decipher.final("ascii"));
Uwaga: Musisz zapisać szyfr/rozszyfrować do własnej zmiennej, a także upewnić się, że nie do łańcucha .final
po .update
.
Jeśli chcesz wiedzieć, jakie są dostępne szyfrów w systemie, należy użyć następującego polecenia:
openssl list-cipher-algorithm
Nawet wtedy, nie można odszyfrować ponieważ wiele kluczy może hash do ta sama wartość. Hash jest funkcją jednokierunkową. Aby uzyskać więcej informacji: http://en.wikipedia.org/wiki/Hash_function –
@JustinEthier W wielu przypadkach przestrzeń wejściowa jest na tyle mała, że zgaduje. W praktyce nigdy nie zgadniesz błędnego wejścia z poprawnym hashem. Albo zgadniesz poprawne dane wejściowe, albo nie znajdziesz pasującego wejścia w ogóle. | Ale ponieważ HMAC jest kluczowany, tylko ci, którzy znają klucz, mogą użyć tego ataku na odgadywanie, więc zwykle nie jest to problemem (z haszowanymi hasłami odgadywanie danych wejściowych jest często problemem). – CodesInChaos
Hmm, prawda, posunąłem się naprzód od tego komentarza, niszcząc go. –