Hier ist der Deal:Datenverlust, wenn es um Cipher.update vorbei, während DER mit (Node.js)
Ich habe einen Puffer von Daten wie folgt strukturiert:
[39 bytes of header] + [body] + [padding]
(von mir berechnet). Wenn ich es in einer Datei speichern, kann ich tatsächlich die Struktur erkennen, und alles scheint in Ordnung zu sein.
Dann habe ich auf DES-CBC encrypt diesem Puffer, und dem, was ich tue, ist
a) Instanziieren des DES-Wrapper, der einen Schlüssel hat, und berechnet eine neue IV (autoPadding: false auf dem Cipher Objekt es schafft, auch)
b) dem dES den Puffer übergeben wrapper
c) der Puffer dann verschlüsselt wird, wie folgt: (Daten der Puffer, en ist das Cipher-Objekt)
var buf1 = en.update(data);
Wenn ich Ausgabe buf1
auf einer Datei (und dann, in meinem Fall, auf einem Sockel) und seine Bytes abrufen, dann entschlüsseln, erhalte ich die folgende Struktur: [header][body]
Aber wenn ich Daten über eine Datei ausgeben und es Bytes abrufen, bekomme ich die Startstruktur. Ich weiß, ich sollte auch en.final()
an buf1
anhängen, aber in meinem Fall brauche ich diese Werte nicht, auch wenn AutoPadding falsch ist, würde es nur einen Fehler werfen.
** Verwenden Sie nicht heute DES. ** Es bietet nur 56 Bit Sicherheit. AES wäre viel besser, weil es mit der niedrigsten Schlüsselgröße von 128 Bit sicherer ist. Es gibt auch eine praktische Grenze für die maximale Chiffretextgröße mit DES. Siehe [Sicherheitsvergleich von 3DES und AES] (http://security.stackexchange.com/q/26179/45523). –
Danke, Artjom, das ist mir bewusst, aber ich muss jetzt DES verwenden. – ProTheJoker