Deutsch
  • crypto
  • edge

Migration von Node.js Crypto zu Web Crypto API: Eine geführte Erfahrung

Tief in die Übergangserfahrung von Crypto zu Web Crypto API, Bereitstellung eines umfassenden Leitfadens mit Schwerpunkt auf 3 häufigen Szenarien.

Sijie
Sijie
Developer

Einführung

Die Web Crypto API ist ein neues JavaScript-Tool zur Kryptographie. Es ist kompatibel mit modernen Browsern und führenden Plattformen, einschließlich [Cloudflare Workers] (https://workers.cloudflare.com/) und [Vercel] (https://vercel.com), sowie Node.js. Eine solche Interoperabilität impliziert den Traum eines Entwicklers - schreiben Sie Ihren Kryptographie-Code einmal und führen Sie ihn auf zahlreichen Plattformen mit der Web Crypto API aus.

Allerdings hat Node.js bereits ein "crypto" -Modul mit einer langen Geschichte, das eine erhebliche Menge an Legacy-Code hinterlässt, der eine Migration benötigt. In diesem Artikel werden wir uns der Übergangserfahrung widmen und einen umfassenden Leitfaden mit Schwerpunkt auf 3 gängigen Szenarien liefern. Unser Ziel ist es, den Weg zur erfolgreichen Migration aufzuzeigen.

Was ist die Web Crypto API

Die Web Crypto API, ein offener Standard des W3C für JavaScript, ist eine Sammlung von standardisierten Kryptographie-Primitiven, die in der [Web Cryptography API-Spezifikation] (https://www.w3.org/TR/WebCryptoAPI/) definiert sind. Sie wurde erstellt, nachdem mehrere Browser und Plattformen ihre eigenen nicht interoperablen Kryptographie-Funktionen hinzugefügt hatten.

Die API bietet Primitiven für Schlüsselgenerierung, Verschlüsselung und Entschlüsselung, digitale Signaturen, Schlüssel- und Bitableitung und kryptographischen Digest. Es ist zentriert um eine Schnittstelle namens SubtleCrypto, weitere Details und Tutorials finden Sie in der Mozilla [MDN] (https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API) -Dokumentation.

Aber Node.js hat doch schon ein Crypto-Modul?

Node.js-Entwickler sind in der Regel vertraut mit dem [Crypto-Modul] (https://nodejs.org/api/crypto.html). Es bietet eine umfassende Palette von kryptographischen Primitiven. Dieses Modul bietet nicht nur Mechanismen für die gleichen kryptographischen Operationen, die in der Web Crypto API definiert sind, sondern enthält oft eine breitere Palette von kryptographischen Algorithmen.

Warum benötigen wir also immer noch die Web Crypto API? Da JavaScript auf vielen Plattformen und Umgebungen beliebt wird, vom Client bis zu Servern und insbesondere am Edge, ist es wichtig, ein plattformübergreifendes kryptographisches Tool zu haben, um Prozesse zu vereinfachen.

Darüber hinaus geben die Funktionen in der Web Crypto API-Standard alle Versprechungen zurück und unterstützen die Async/Await-Syntax. Dies ist ein signifikanter Vorteil gegenüber dem Crypto-Modul, das synchron ist und die Ereignisschleife blockieren kann.

Und es gibt eine interessante Tatsache, dass Node.js [ seine Unterstützung] (https://nodejs.org/api/webcrypto.html#web-crypto-api) für die Web Crypto API hinzufügt, das bedeutet, in den meisten Fällen ist die Web Crypto API in den meisten bekannten Plattformen perfekt.

Verwendung der Web Crypto API

Auf den meisten Plattformen ist die Sammlung von Web Crypto APIs über das globale crypto -Objekt zugänglich, das 3 Top-Level-Dienstprogramme enthält: getRandomValues, randomUUID und subtle.

Es gibt viele Unterschiede im Vergleich zum traditionellen Crypto-Modul. Sie können in 3 am häufigsten Teilen zusammengefasst werden. Lassen Sie uns diese durchgehen und sehen, wie wir von bestehendem Code migrieren können.

#1 Generieren Sie zufällige Werte

Im Crypto-Modul können Sie zufällige Werte generieren, indem Sie randomBytes aufrufen.