Hat node.js bereits eine integrierte base64-Codierung?
Der Grund, warum ich dies frage, ist, dass final()
von crypto
nur Hex-, Binär- oder ASCII-Daten ausgeben kann. Zum Beispiel:
var cipher = crypto.createCipheriv('des-ede3-cbc', encryption_key, iv);
var ciph = cipher.update(plaintext, 'utf8', 'hex');
ciph += cipher.final('hex');
var decipher = crypto.createDecipheriv('des-ede3-cbc', encryption_key, iv);
var txt = decipher.update(ciph, 'hex', 'utf8');
txt += decipher.final('utf8');
update()
Kann laut Dokumentation base64-codierte Daten ausgeben. Allerdings final()
unterstützt nicht base64. Ich habe es versucht und es wird brechen.
Wenn ich das mache:
var ciph = cipher.update(plaintext, 'utf8', 'base64');
ciph += cipher.final('hex');
Was soll ich dann zur Entschlüsselung verwenden? Hex oder Base64?
Daher suche ich nach einer Funktion zum Base64-Codieren meiner verschlüsselten Hex-Ausgabe.
cipher.final('base64')
WerkeAntworten:
Puffer können verwendet werden, um eine Zeichenfolge oder ein Datenelement aufzunehmen und das Ergebnis mit base64 zu codieren. Zum Beispiel:
Puffer sind ein globales Objekt, daher ist keine Anforderung erforderlich. Mit Zeichenfolgen erstellte Puffer können einen optionalen Codierungsparameter verwenden, um anzugeben, in welcher Codierung sich die Zeichenfolge befindet. Die verfügbaren
toString
undBuffer
Konstruktorcodierungen lauten wie folgt:quelle
const atob = (data) => Buffer.from(data, 'base64').toString('ascii');
.toString("binary")
(atob
steht schließlich für ascii (base64) bis binär)Die zuvor enthaltene akzeptierte Antwort
new Buffer()
, die in Knotenversionen größer als 6 als Sicherheitsproblem angesehen wird (obwohl es für diesen Anwendungsfall wahrscheinlich ist, dass die Eingabe immer zu einer Zeichenfolge gezwungen werden kann).Der
Buffer
Konstruktor ist gemäß der Dokumentation veraltet .Hier ist ein Beispiel für eine Sicherheitsanfälligkeit , die sich aus der Verwendung in der ws-Bibliothek ergeben kann.
Die Codefragmente sollten lauten:
Nachdem diese Antwort geschrieben wurde, wurde sie aktualisiert und stimmt nun mit dieser überein.
quelle
new Buffer
) anstelle von verwendenBuffer.from
.Krypto unterstützt jetzt base64 ( Referenz ):
Sie können also einfach Folgendes tun:
quelle
Puffer können verwendet werden, um eine Zeichenfolge oder ein Datenelement aufzunehmen und das Ergebnis mit base64 zu codieren. Zum Beispiel:
Sie können Buffer über npm installieren wie: -
npm i buffer --save
Sie können dies in Ihrer
js
Datei wie folgt verwenden: -quelle
Ich verwende den folgenden Code, um die base64-Zeichenfolge in der Node-API nodejs Version 10.7.0 zu dekodieren
Bitte versuchen Sie nicht, den obigen Code in der Konsole des Browsers auszuführen. Dies funktioniert nicht. Fügen Sie den Code in serverseitige Dateien von nodejs ein. Ich verwende den obigen Zeilencode in der API-Entwicklung.
quelle
Ich habe eine ultimative kleine js npm- Bibliothek für die Base64-Codierungs- / Decodierungskonvertierung in Node.js erstellt.
Installation
Verwendungszweck
quelle
Sie können Base64 mit einfachem Javascript codieren und decodieren.
Dies ist in diesem Base64-Encoder-Decoder implementiert
quelle