Node.js und Crypto-Bibliothek

8

Ich habe seltsame Probleme mit der Krypto-Bibliothek von Node. Ich habe dieses einfache AES-Testskript geschrieben:

%Vor%

Wenn ich console.log (dec) mache, ist es null. Aus irgendeinem Grund, wenn ich den Test auf "123 | 123123" setze, funktioniert es. Warum funktioniert "123 | 123123", aber "123 | 123123123123123" nicht?

    
Mike 21.12.2010, 07:38
quelle

3 Antworten

27

Sie müssen die Rückgabe von cipher.update sowie von cipher.final speichern, um sicherzustellen, dass Sie alles haben.

cipher.update "gibt den verschlüsselten Inhalt zurück und kann beim Streamen mehrfach mit neuen Daten aufgerufen werden":

Ссылка

cipher.final "gibt alle verbleibenden verschlüsselten Inhalte zurück".

Ich denke, Sie fügen die Ergebnisse bei jedem Aufruf einfach so an:

%Vor%

Ich bekomme '12443a347e8e5b46caba9f7afc93d71287fbf11169e8556c6bb9c51760d5c585' für verschlüsselte und '123 | 123123123123123' für dec im obigen mit Knoten v0.2.5

    
RandomEtc 24.12.2010 17:22
quelle
8

RandomEtc ist korrekt, aber falls jemand bei dieser Frage stolpert, benutzt er 'base64' als Kodierung: Nicht. Bleib bei 'hex' . Zumindest ab 0.4.2 gibt es einen Fehler, der zu beschädigten Daten führen kann, wenn 'base64' verwendet wird. Siehe: Ссылка

    
Trevor Burnham 09.03.2011 05:20
quelle
1

Beachten Sie, dass der Operator += in späteren Versionen von node.js nicht funktioniert. Befolgen Sie die Anweisungen in der Node.js Crypto-Klasse, die unterschiedliche Ergebnisse mit der aktualisierten Version zurückgibt und verwenden Sie Buffer.concat()

    
wdhilliard 12.12.2013 16:09
quelle