Heim  >  Artikel  >  Web-Frontend  >  Einführung in gängige Methoden des NODE.JS-Verschlüsselungsmoduls CRYPTO

Einführung in gängige Methoden des NODE.JS-Verschlüsselungsmoduls CRYPTO

高洛峰
高洛峰Original
2016-12-26 09:18:141292Durchsuche

Verwenden Sie require('crypto'), um das Verschlüsselungsmodul aufzurufen.

Das Verschlüsselungsmodul erfordert, dass das zugrunde liegende System OpenSSL-Unterstützung bietet. Es bietet eine Möglichkeit, Sicherheitsanmeldeinformationen zu kapseln und kann sowohl für sichere HTTPS-Netzwerke als auch für normale HTTP-Verbindungen verwendet werden.

Dieses Modul bietet außerdem einen Satz von Hash (Hash), HMAC (Schlüssel-Hash), Chiffre (Kodierung), Entschlüsselung (Dekodierung), Signierung (Signatur) und Verifizierung (Verifizierung) für die Kapselung der OpenSSL-Methode.

crypto.createCredentials(details)

Erstellen Sie ein Anmeldeinformationsobjekt. Der optionale Parameter details ist ein Wörterbuch mit Schlüsselwerten:
key: ein PEM-codierter privater Schlüssel vom Typ Zeichenfolge.
Zertifikat: Ein PEM-codiertes Zertifizierungszertifikat vom Typ String.
ca: PEM-codiertes vertrauenswürdiges CA-Zertifikat in Stringform oder eine Liste von Zertifikaten.

Wenn keine „CA“-Details angegeben werden, verwendet node.js die standardmäßige öffentliche vertrauenswürdige Liste unter http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins /certdata.txt.

crypto.createHash(algorithm)

Erstellt ein Hash-Objekt und gibt es zurück, das ein kryptografischer Hash des angegebenen Algorithmus ist und zum Generieren eines Hash-Digests verwendet wird.

Der Parameteralgorithmus kann den Algorithmus auswählen, der von der auf dem System installierten OpenSSL-Version unterstützt wird. Zum Beispiel: „sha1“, „md5“, „sha256“, „sha512“ usw. In neueren Versionen zeigt OpenSSL List-Message-Digest-Algorithms diese verfügbaren Digest-Algorithmen an.

hash.update(data)

Aktualisiert den Inhalt des Hashs auf die angegebenen Daten. Diese Methode kann beim Arbeiten mit Streaming-Daten mehrmals aufgerufen werden.

hash.digest(encoding='binary')

Berechnet den Hash-Digest aller eingehenden Daten. Der Kodierungsparameter kann „hex“, „binär“ oder „base64“ sein.

crypto.createHmac(algorithm, key)

Erstellt ein Hmac-Objekt und gibt es zurück, bei dem es sich um einen kryptografischen Hmac mit dem angegebenen Algorithmus und Schlüssel handelt.

Der Parameter Algorithmus kann den von OpenSSL unterstützten Algorithmus auswählen – siehe createHash oben. Der Parameterschlüssel ist der von hmac verwendete Schlüssel.

hmac.update(data)

Aktualisieren Sie den Inhalt von hmac auf die angegebenen Daten. Diese Methode kann beim Arbeiten mit Streaming-Daten mehrmals aufgerufen werden.

hmac.digest(encoding='binary')

Berechnet den hmac-Digest aller eingehenden Daten. Der Kodierungsparameter kann „hex“, „binär“ oder „base64“ sein.

crypto.createCipher(algorithm, key)

Erstellt ein Verschlüsselungsobjekt unter Verwendung des angegebenen Algorithmus und Schlüssels und gibt es zurück.

Der Parameteralgorithmus kann den von OpenSSL unterstützten Algorithmus auswählen, z. B. „aes192“ usw. In neueren Versionen zeigt OpenSSL List-Cipher-Algorithms die verfügbaren Verschlüsselungsalgorithmen an.

cipher.update(data, input_encoding='binary', output_encoding='binary')

Verwenden Sie die Parameterdaten, um den zu verschlüsselnden Inhalt zu aktualisieren. Die Codierungsmethode wird durch den Parameter angegeben input_encoding, das „utf8“, „ascii“ oder „binär“ sein kann. Der Parameter „output_encoding“ gibt die Ausgabekodierungsmethode des verschlüsselten Inhalts an, die „binär“, „base64“ oder „hex“ sein kann.

Gibt den verschlüsselten Inhalt zurück. Diese Methode kann bei Verwendung von Streaming-Daten mehrmals aufgerufen werden.

cipher.final(output_encoding='binary')

Gibt den gesamten verbleibenden verschlüsselten Inhalt zurück. Die Ausgabecodierung von „output_encoding“ ist „binär“, „ascii“ oder „utf8“.

crypto.createDecipher(algorithm, key)

Erstellt ein Entschlüsselungsobjekt und gibt es unter Verwendung des angegebenen Algorithmus und Schlüssels zurück. Dieses Objekt ist die Umkehrung des oben genannten verschlüsselten Objekts.

decipher.update(data, input_encoding='binary', output_encoding='binary')

Verwenden Sie Parameterdaten, um den zu entschlüsselnden Inhalt zu aktualisieren, und seine Codierungsmethode ist „binär“, „base64“ oder „hex“. Der Parameter „output_encoding“ gibt die Ausgabekodierungsmethode des entschlüsselten Klartextinhalts an, die „binär“, „ascii“ oder „utf8“ sein kann.

decipher.final(output_encoding='binary')

Gibt den gesamten verbleibenden entschlüsselten Klartext zurück, dessen Ausgabekodierung entweder „binär“, „ascii“ oder „utf8“ ist.

crypto.createSign(algorithm)

Erstellt ein Unterzeichnerobjekt und gibt es unter Verwendung des angegebenen Algorithmus zurück. In vorhandenen OpenSSL-Distributionen zeigt OpenSSL List-Public-Key-Algorithms die verfügbaren Signaturalgorithmen an, zum Beispiel: „RSA-SHA256“.

signer.update(data)

Verwenden Sie den Datenparameter, um das Signerobjekt zu aktualisieren. Diese Methode kann beim Arbeiten mit Streaming-Daten mehrmals aufgerufen werden.

signer.sign(private_key, output_format='binary')

Berechnet die Signatur für alle an den Unterzeichner übergebenen Daten. private_key ist eine Zeichenfolge, die den PEM-codierten privaten Schlüssel enthält, der zum Signieren verwendet wird.

Rückgabesignatur, die Ausgabe im Ausgabeformat kann „binär“, „hex“ oder „base64“ sein.

crypto.createVerify(algorithm)

Erstellt ein Verifiziererobjekt unter Verwendung des angegebenen Algorithmus und gibt es zurück. Es ist die Umkehrung des obigen Signer-Objekts.

verifier.update(data)

Aktualisiert das Validatorobjekt mithilfe des Datenparameters. Diese Methode kann beim Arbeiten mit Streaming-Daten mehrmals aufgerufen werden.

verifier.verify(cert, signatur, signatur_format='binary')

Verwenden Sie die Parameter „cert“ und „signatur“, um zu überprüfen, ob es sich bei den signierten Daten um die PEM-codierte öffentliche Schlüsselzeichenfolge handelt, „signatur“ um die Signatur der zuvor berechneten Daten handelt und „signaturformat“ „binär“, „hex“ oder „base64“ sein kann. .

Gibt „true“ oder „false“ zurück, basierend auf dem Ergebnis der Überprüfung der Signaturgültigkeit der Daten und des öffentlichen Schlüssels.

So schreiben Sie einen irreversiblen Verschlüsselungscode, wenn Sie ihn benötigen

var text = "123|12312312123123121231231212312312123123121231231212312312";
var hasher=crypto.createHash("md5");
hasher.update(text);
var hashmsg=hasher.digest('hex');//hashmsg为加密之后的数据

Wenn Sie eine Verschlüsselungs- und Entschlüsselungsumgebung benötigen

var key="asdhjwheru*asd123-123";//加密的秘钥
var text = "123|12312312123123121231231212312312123123121231231212312312";
var crypted =cipher.update(text,'utf8','hex');
crypted+=cipher.final('hex');
var message=crypted;//加密之后的值
var decipher = crypto.createDecipher('aes-256-cbc',key);
var dec=decipher.update(message,'hex','utf8');
dec+= decipher.final('utf8');//解密之后的值

Mehr NODE.JS-Verschlüsselung Bitte zahlen Sie Beachten Sie die chinesische PHP-Website für verwandte Artikel, in denen gängige Methoden des Moduls CRYPTO vorgestellt werden!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn