ホームページ  >  記事  >  ウェブフロントエンド  >  NODE.JS暗号化モジュールCRYPTOの一般的な手法の紹介

NODE.JS暗号化モジュールCRYPTOの一般的な手法の紹介

高洛峰
高洛峰オリジナル
2016-12-26 09:18:141315ブラウズ

require('crypto') を使用して暗号化モジュールを呼び出します。

暗号化モジュールでは、基盤となるシステムが OpenSSL サポートを提供する必要があります。これは、セキュリティ資格情報をカプセル化する方法を提供し、通常の HTTP 接続だけでなく HTTPS セキュア ネットワークにも使用できます。

このモジュールは、OpenSSL ハッシュ (ハッシュ)、hmac (キー ハッシュ)、cipher (エンコード)、decopher (デコード)、sign (署名)、verify (検証) のための一連のカプセル化メソッドも提供します。

crypto.createCredentials(details)

認証情報オブジェクトを作成します。オプションのパラメーターの詳細は、キー値を含む辞書です。
key: 文字列タイプの PEM エンコードされた秘密キー。
cert: 文字列タイプの、PEM エンコードされた証明書証明書。
ca: 文字列形式の PEM エンコードされた信頼できる CA 証明書、または証明書のリスト。

「ca」の詳細が指定されていない場合、node.js は http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt にあるデフォルトのパブリック信頼リストを使用します。 。

crypto.createHash(algorithm)

ハッシュ オブジェクトを作成して返します。これは、指定されたアルゴリズムの暗号化ハッシュであり、ハッシュ ダイジェストの生成に使用されます。

パラメータアルゴリズムは、システムにインストールされているOpenSSLバージョンでサポートされているアルゴリズムを選択できます。例: 「sha1」、「md5」、「sha256」、「sha512」など。最近のリリースでは、openssl list-message-digest-algorithms にこれらの利用可能なダイジェスト アルゴリズムが表示されます。

hash.update(data)

ハッシュの内容を指定されたデータに更新します。このメソッドは、ストリーミング データを操作するときに複数回呼び出される場合があります。

hash.digest(encoding='binary')

すべての受信データのハッシュ ダイジェストを計算します。エンコードパラメータは「hex」、「binary」、「base64」のいずれかです。

crypto.createHmac(algorithm, key)

hmac オブジェクトを作成して返します。これは、指定されたアルゴリズムとキーを持つ暗号化 hmac です。

パラメータ アルゴリズムでは、OpenSSL でサポートされているアルゴリズムを選択できます - 上記の createHash を参照してください。パラメータのキーは、hmac で使用されるキーです。

hmac.update(data)

hmacの内容を指定されたデータに更新します。このメソッドは、ストリーミング データを操作するときに複数回呼び出される場合があります。

hmac.digest(encoding='binary')

すべての受信データの hmac ダイジェストを計算します。エンコードパラメータは「hex」、「binary」、「base64」のいずれかです。

crypto.createCipher(algorithm, key)

指定されたアルゴリズムとキーを使用して暗号オブジェクトを作成して返します。

パラメータアルゴリズムは、「aes192」などのOpenSSLでサポートされているアルゴリズムを選択できます。最近のリリースでは、openssl list-cipher-algorithms により、利用可能な暗号化アルゴリズムが表示されます。

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

パラメータ data を使用して、暗号化するコンテンツを更新します。 エンコード方式はパラメータ input_encoding で指定されます (「utf8」にすることができます)。 、「アスキー」または「バイナリ」。パラメーターoutput_encodingは、暗号化されたコンテンツの出力エンコーディング方式を指定します。これは、「binary」、「base64」、「hex」のいずれかです。

暗号化されたコンテンツを返します。ストリーミング データを使用する場合、このメソッドは複数回呼び出される可能性があります。

cipher.final(output_encoding='binary')

残りの暗号化されたコンテンツをすべて返します。output_encoding 出力エンコーディングは「binary」、「ascii」、「utf8」のいずれかです。

crypto.createDecipher(algorithm, key)

指定されたアルゴリズムとキーを使用して復号オブジェクトを作成し、返します。このオブジェクトは、上記の暗号化されたオブジェクトの逆です。

decpher.update(data, input_encoding='binary', Output_encoding='binary')

パラメータ データを使用して、エンコードが「binary」、「base64」、または「hex」である復号化するコンテンツを更新します。パラメータoutput_encodingは、復号化された平文コンテンツの出力エンコード方式を指定します。これには、「binary」、「ascii」または「utf8」を指定できます。

decpher.final(output_encoding='binary')

output_encoding' が 'binary'、'ascii'、または 'utf8'` のいずれかである残りの復号化された平文をすべて返します。

crypto.createSign(algorithm)

指定されたアルゴリズムを使用して署名者オブジェクトを作成して返します。既存の OpenSSL ディストリビューションでは、openssl list-public-key-algorithms に利用可能な署名アルゴリズムが表示されます (例: 「RSA-SHA256」)。

signer.update(data)

data パラメーターを使用して、署名者オブジェクトを更新します。このメソッドは、ストリーミング データを操作するときに複数回呼び出される場合があります。

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

署名者に渡されたすべてのデータの署名を計算します。 private_key は、署名に使用される PEM エンコードされた秘密キーを含む文字列です。

署名を返します。output_format 出力は「binary」、「hex」、「base64」のいずれかになります。

crypto.createVerify(algorithm)

指定されたアルゴリズムを使用して Verifier オブジェクトを作成し、返します。これは、上記の署名者オブジェクトの逆です。

verifier.update(data)

data パラメーターを使用してバリデーター オブジェクトを更新します。このメソッドは、ストリーミング データを操作するときに複数回呼び出される場合があります。

verifier.verify(cert,signature,signature_format='binary')

パラメーター cert と Signature を使用して、署名されたデータが PEM でエンコードされた公開鍵文字列であること、signature が以前に計算されたデータの署名であること、signature_format が「binary」、「hex」、または「base64」であることを確認します。

データと公開鍵の署名有効性検証の結果に基づいてtrueまたはfalseを返します。

必要なときに不可逆暗号化コードを記述する方法

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

暗号化および復号化環境が必要な場合

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');//解密之后的值

NODE.JS暗号化モジュールCRYPTOの一般的な方法の詳細と関連記事については、PHPを参照してください。中国語のサイトです!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。