Ich versuche, verschlüsseln/entschlüsseln Funktionen mit AES-128-Gcm wie von Node Krypto bereitgestellt. Aus meiner Sicht verschlüsselt gcm den Chiffretext aber auch Hashes und stellt dies als "Authentifizierungs-Tag" zur Verfügung. Ich erhalte jedoch weiterhin den Fehler: "Nicht unterstützter Status oder Daten können nicht authentifiziert werden"."Nicht unterstützten Zustand oder nicht authentifizieren Daten" mit AES-128-Gcm in Knoten
Ich bin mir nicht sicher, ob das ein Fehler in meinem Code ist - mit Blick auf den verschlüsselten Chiffretext und Auth-Tag ist derjenige, der von der Entschlüsselungsfunktion abgerufen wird, der gleiche wie der von der Verschlüsselungsfunktion.
function encrypt(plaintext) {
// IV is being generated for each encryption
var iv = crypto.randomBytes(12),
cipher = crypto.createCipheriv(aes,key,iv),
encryptedData = cipher.update(plaintext),
tag;
// Cipher.final has been called, so no more encryption/updates can take place
encryptedData += cipher.final();
// Auth tag must be generated after cipher.final()
tag = cipher.getAuthTag();
return encryptedData + "$$" + tag.toString('hex') + "$$" + iv.toString('hex');
}
function decrypt(ciphertext) {
var cipherSplit = ciphertext.split("$$"),
text = cipherSplit[0],
tag = Buffer.from(cipherSplit[1], 'hex'),
iv = Buffer.from(cipherSplit[2], 'hex'),
decipher = crypto.createDecipheriv(aes,key,iv);
decipher.setAuthTag(tag);
var decryptedData = decipher.update(text);
decryptedData += decipher.final();
}
der Fehler durch decipher.final geworfen wird().