亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

characters

加密

穩(wěn)定性: 2 - 不穩(wěn)定; 正在討論未來版本的 API 改進(jìn),會(huì)盡量減少重大變化。詳見后文。

使用 require('crypto') 來訪問這個(gè)模塊。

加密模塊提供了 HTTP 或 HTTPS 連接過程中封裝安全憑證的方法。

它也提供了 OpenSSL 的哈希,hmac, 加密(cipher), 解密(decipher), 簽名(sign) 和 驗(yàn)證(verify) 方法的封裝。

crypto.setEngine(engine[, flags])

為某些/所有 OpenSSL 函數(shù)加載并設(shè)置引擎(根據(jù)參數(shù) flags 來設(shè)置)。

engine 可能是 id,或者是指向引擎共享庫的路徑。

flags 是可選參數(shù),默認(rèn)值是ENGINE_METHOD_ALL ,它可以是以下一個(gè)或多個(gè)參數(shù)的組合(在constants里定義):

  • ENGINE_METHOD_RSA

  • ENGINE_METHOD_DSA

  • ENGINE_METHOD_DH

  • ENGINE_METHOD_RAND

  • ENGINE_METHOD_ECDH

  • ENGINE_METHOD_ECDSA

  • ENGINE_METHOD_CIPHERS

  • ENGINE_METHOD_DIGESTS

  • ENGINE_METHOD_STORE

  • ENGINE_METHOD_PKEY_METH

  • ENGINE_METHOD_PKEY_ASN1_METH

  • ENGINE_METHOD_ALL

  • ENGINE_METHOD_NONE

crypto.getCiphers()

返回支持的加密算法名數(shù)組。

例如:

var ciphers = crypto.getCiphers();
console.log(ciphers); // ['AES-128-CBC', 'AES-128-CBC-HMAC-SHA1', ...]

crypto.getHashes()

返回支持的哈希算法名數(shù)組。

例如:

var hashes = crypto.getHashes();
console.log(hashes); // ['sha', 'sha1', 'sha1WithRSAEncryption', ...]

crypto.createCredentials(details)

穩(wěn)定性: 0 - 拋棄. 用 [tls.createSecureContext][] 替換.

根據(jù)參數(shù) details,創(chuàng)建一個(gè)加密憑證對(duì)象。參數(shù)為字典,key 包括:

  • pfx : 字符串或者buffer對(duì)象,表示經(jīng)PFX或PKCS12編碼產(chǎn)生的私鑰、證書以及CA證書

  • key : 進(jìn)過 PEM 編碼的私鑰

  • passphrase : 私鑰或 pfx 的密碼

  • cert : PEM 編碼的證書

  • ca : 字符串或字符串?dāng)?shù)組,PEM 編碼的可信任的 CA 證書。

  • crl : 字符串或字符串?dāng)?shù)組,PEM 編碼的 CRLs(證書吊銷列表Certificate Revocation List)。

  • ciphers: 字符串,使用或者排除的加密算法。參見http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt

    crypto.createHash(algorithm)

    創(chuàng)建并返回一個(gè)哈希對(duì)象,使用指定的算法來生成哈希摘要。

    參數(shù) algorithm 取決于平臺(tái)上 OpenSSL 版本所支持的算法。例如,'sha1', 'md5','sha256', 'sha512' 等等。在最近的版本中,openssllist-message-digest-algorithms 會(huì)顯示所有算法。

    例如: 這個(gè)程序會(huì)計(jì)算文件的 sha1 的和。

    var filename = process.argv[2];
    var crypto = require('crypto');
    var fs = require('fs');
    
    var shasum = crypto.createHash('sha1');
    
    var s = fs.ReadStream(filename);
    s.on('data', function(d) {
      shasum.update(d);
    });
    
    s.on('end', function() {
      var d = shasum.digest('hex');
      console.log(d + '  ' + filename);
    });

    類: Hash

    用來生成數(shù)據(jù)的哈希值。

    它是可讀寫的流 stream 。寫入的數(shù)據(jù)來用計(jì)算哈希值。當(dāng)寫入流結(jié)束后,使用 read() 方法來獲取計(jì)算后的哈希值。也支持老的 updatedigest 方法。

    通過 crypto.createHash 返回。

    hash.update(data[, input_encoding])

    根據(jù) data 來更新哈希內(nèi)容,編碼方式根據(jù) input_encoding 來定,有 'utf8', 'ascii''binary'。如果沒有傳入值,默認(rèn)編碼方式是'binary'。如果 dataBuffer, input_encoding 將會(huì)被忽略。

    因?yàn)樗橇魇綌?shù)據(jù),所以可以使用不同的數(shù)據(jù)調(diào)用很多次。

    hash.digest([encoding])

    計(jì)算傳入的數(shù)據(jù)的哈希摘要。encoding 可以是 'hex', 'binary''base64',如果沒有指定encoding ,將返回 buffer。
    注意:調(diào)用  digest()  后不能再用 hash 對(duì)象。

    crypto.createHmac(algorithm, key)

    創(chuàng)建并返回一個(gè) hmac 對(duì)象,用指定的算法和秘鑰生成 hmac 圖譜。

    它是可讀寫的流 stream 。寫入的數(shù)據(jù)來用計(jì)算 hmac。當(dāng)寫入流結(jié)束后,使用 read() 方法來獲取計(jì)算后的值。也支持老的 updatedigest 方法。

    參數(shù) algorithm 取決于平臺(tái)上 OpenSSL 版本所支持的算法,參見前面的 createHash。key是 hmac 算法中用的 key。

    類: Hmac

    用來創(chuàng)建 hmac 加密圖譜。

    通過 crypto.createHmac 返回。

    hmac.update(data)

    根據(jù) data 更新 hmac 對(duì)象。因?yàn)樗橇魇綌?shù)據(jù),所以可以使用新數(shù)據(jù)調(diào)用多次。

    hmac.digest([encoding])

    計(jì)算傳入數(shù)據(jù)的 hmac 值。encoding可以是 'hex', 'binary''base64',如果沒有指定encoding ,將返回 buffer。

    注意:調(diào)用  digest()  后不能再用 hmac 對(duì)象。

    crypto.createCipher(algorithm, password)

    使用傳入的算法和秘鑰來生成并返回加密對(duì)象。

    algorithm 取決于 OpenSSL,例如'aes192'等。最近發(fā)布的版本中, openssl list-cipher-algorithms 將會(huì)展示可用的加密算法。password 用來派生 key 和 IV,它必須是一個(gè)'binary' 編碼的字符串或者一個(gè)buffer

    它是可讀寫的流 stream 。寫入的數(shù)據(jù)來用計(jì)算 hmac。當(dāng)寫入流結(jié)束后,使用 read() 方法來獲取計(jì)算后的值。也支持老的updatedigest 方法。

    注意,OpenSSL 函數(shù)initialization vector.

    keyiv 必須是 'binary' 的編碼字符串或buffers.

    類: Cipher

    加密數(shù)據(jù)的類。.

    通過 crypto.createCiphercrypto.createCipheriv 返回。

    它是可讀寫的流 stream 。寫入的數(shù)據(jù)來用計(jì)算 hmac。當(dāng)寫入流結(jié)束后,使用 read() 方法來獲取計(jì)算后的值。也支持老的updatedigest 方法。

    cipher.update(data[, input_encoding][, output_encoding])

    根據(jù) data 來更新哈希內(nèi)容,編碼方式根據(jù) input_encoding 來定,有 'utf8', 'ascii' or'binary'。如果沒有傳入值,默認(rèn)編碼方式是'binary'。如果dataBuffer,input_encoding 將會(huì)被忽略。

    output_encoding 指定了輸出的加密數(shù)據(jù)的編碼格式,它可用是 'binary', 'base64''hex'。如果沒有提供編碼,將返回 buffer 。

    返回加密后的內(nèi)容,因?yàn)樗橇魇綌?shù)據(jù),所以可以使用不同的數(shù)據(jù)調(diào)用很多次。

    cipher.final([output_encoding])

    返回加密后的內(nèi)容,編碼方式是由 output_encoding 指定,可以是 'binary', 'base64''hex'。如果沒有傳入值,將返回 buffer。

    注意:cipher 對(duì)象不能在 final() 方法之后調(diào)用。

    cipher.setAutoPadding(auto_padding=true)

    你可以禁用輸入數(shù)據(jù)自動(dòng)填充到塊大小的功能。如果 auto_padding 是false, 那么輸入數(shù)據(jù)的長度必須是加密器塊大小的整倍數(shù),否則 final 會(huì)失敗。這對(duì)非標(biāo)準(zhǔn)的填充很有用,例如使用0x0而不是PKCS的填充。這個(gè)函數(shù)必須在 cipher.final 之前調(diào)用。

    cipher.getAuthTag()

    加密認(rèn)證模式(目前支持:GCM),這個(gè)方法返回經(jīng)過計(jì)算的認(rèn)證標(biāo)志 Buffer。必須使用final方法完全加密后調(diào)用。

    cipher.setAAD(buffer)

    加密認(rèn)證模式(目前支持:GCM),這個(gè)方法設(shè)置附加認(rèn)證數(shù)據(jù)( AAD )。

    crypto.createDecipher(algorithm, password)

    根據(jù)傳入的算法和密鑰,創(chuàng)建并返回一個(gè)解密對(duì)象。這是 createCipher() 的鏡像。

    crypto.createDecipheriv(algorithm, key, iv)

    根據(jù)傳入的算法,密鑰和 iv,創(chuàng)建并返回一個(gè)解密對(duì)象。這是 createCipheriv() 的鏡像。

    類: Decipher

    解密數(shù)據(jù)類。

    通過 crypto.createDeciphercrypto.createDecipheriv 返回。

    解密對(duì)象是可讀寫的流 streams 。用寫入的加密數(shù)據(jù)生成可讀的純文本數(shù)據(jù)。也支持老的updatedigest 方法。

    decipher.update(data[, input_encoding][, output_encoding])

    使用參數(shù) data 更新需要解密的內(nèi)容,其編碼方式是 'binary','base64''hex'。如果沒有指定編碼方式,則把 data 當(dāng)成 buffer 對(duì)象。

    如果 dataBuffer,則忽略 input_encoding 參數(shù)。

    參數(shù) output_decoding 指定返回文本的格式,是 'binary', 'ascii''utf8' 之一。如果沒有提供編碼格式,則返回 buffer。

    decipher.final([output_encoding])

    返回剩余的解密過的內(nèi)容,參數(shù) output_encoding'binary', 'ascii''utf8',如果沒有指定編碼方式,返回 buffer。

    注意,decipher對(duì)象不能在 final() 方法之后使用。

    decipher.setAutoPadding(auto_padding=true)

    如果加密的數(shù)據(jù)是非標(biāo)準(zhǔn)塊,可以禁止其自動(dòng)填充,防止 decipher.final 檢查并移除。僅在輸入數(shù)據(jù)長度是加密塊長度的整數(shù)倍的時(shí)才有效。你必須在 decipher.update 前調(diào)用。

    decipher.setAuthTag(buffer)

    對(duì)于加密認(rèn)證模式(目前支持:GCM),必須用這個(gè)方法來傳遞接收到的認(rèn)證標(biāo)志。如果沒有提供標(biāo)志,或者密文被篡改,將會(huì)拋出 final 標(biāo)志,認(rèn)證失敗,密文會(huì)被拋棄,

    decipher.setAAD(buffer)

    對(duì)于加密認(rèn)證模式(目前支持:GCM),用這個(gè)方法設(shè)置附加認(rèn)證數(shù)據(jù)( AAD )。

    crypto.createSign(algorithm)

    根據(jù)傳入的算法創(chuàng)建并返回一個(gè)簽名數(shù)據(jù)。 OpenSSL 的最近版本里,openssl list-public-key-algorithms 會(huì)列出所有算法,比如'RSA-SHA256'。

    類: Sign

    生成數(shù)字簽名的類。

    通過 crypto.createSign 返回。

    簽名對(duì)象是可讀寫的流 streams??蓪憯?shù)據(jù)用來生成簽名。當(dāng)所有的數(shù)據(jù)寫完,sign 簽名方法會(huì)返回簽名。也支持老的 updatedigest 方法。

    sign.update(data)

    用參數(shù) data 來更新簽名對(duì)象。因?yàn)槭橇魇綌?shù)據(jù),它可以被多次調(diào)用。

    sign.sign(private_key[, output_format])

    根據(jù)傳送給sign的數(shù)據(jù)來計(jì)算電子簽名。

    private_key 可以是一個(gè)對(duì)象或者字符串。如果是字符串,將會(huì)被當(dāng)做沒有密碼的key。

    private_key:

    返回值output_format 包含數(shù)字簽名, 格式是 'binary','hex''base64' 之一。如果沒有指定 encoding ,將返回 buffer。

    注意:sign 對(duì)象不能在 sign() 方法之后調(diào)用。

    crypto.createVerify(algorithm)

    根據(jù)傳入的算法,創(chuàng)建并返回驗(yàn)證對(duì)象。是簽名對(duì)象(signing object)的鏡像。

    類: Verify

    用來驗(yàn)證簽名的類。

    通過 crypto.createVerify 返回。

    是可寫流 streams??蓪憯?shù)據(jù)用來驗(yàn)證簽名。一旦所有數(shù)據(jù)寫完后,如簽名正確 verify 方法會(huì)返回 true 。

    也支持老的 update 方法。

    verifier.update(data)

    用參數(shù) data 來更新驗(yàn)證對(duì)象。因?yàn)槭橇魇綌?shù)據(jù),它可以被多次調(diào)用。

    verifier.verify(object, signature[, signature_format])

    使用 object 和  signature 驗(yàn)證簽名數(shù)據(jù)。參數(shù) object 是包含了 PEM 編碼對(duì)象的字符串,它可以是 RSA 公鑰, DSA 公鑰, 或 X.509 證書。signature 是之前計(jì)算出來的數(shù)字簽名。signature_format 可以是 'binary', 'hex''base64' 之一,如果沒有指定編碼方式 ,則默認(rèn)是buffer 對(duì)象。

    根據(jù)數(shù)據(jù)和公鑰驗(yàn)證簽名有效性,來返回 true 或 false。

    注意:verifier 對(duì)象不能在 verify() 方法之后調(diào)用。

    crypto.createDiffieHellman(prime_length[, generator])

    創(chuàng)建一個(gè) Diffie-Hellman 密鑰交換(Diffie-Hellman key exchange)對(duì)象,并根據(jù)給定的位長度生成一個(gè)質(zhì)數(shù)。如果沒有指定參數(shù) generator,默認(rèn)為 2。

    crypto.createDiffieHellman(prime[, prime_encoding][, generator][, generator_encoding])

    使用傳入的 primegenerator 創(chuàng)建 Diffie-Hellman 秘鑰交互對(duì)象。

    generator 可以是數(shù)字,字符串或Buffer。

    如果沒有指定 generator,使用 2.

    prime_encodinggenerator_encoding 可以是 'binary', 'hex', 或 'base64'。

    如果沒有指定 prime_encoding, 則 Buffer 為 prime。

    如果沒有指定 generator_encoding ,則 Buffer 為 generator

    類: DiffieHellman

    創(chuàng)建 Diffie-Hellman 秘鑰交換的類。

    通過 crypto.createDiffieHellman 返回。

    diffieHellman.verifyError

    在初始化的時(shí)候,如果有警告或錯(cuò)誤,將會(huì)反應(yīng)到這。它是以下值(定義在 constants 模塊):

    diffieHellman.generateKeys([encoding])

    生成秘鑰和公鑰,并返回指定格式的公鑰。這個(gè)值必須傳給其他部分。編碼方式: 'binary', 'hex', 或 'base64'。如果沒有指定編碼方式,將返回 buffer。

    diffieHellman.computeSecret(other_public_key[, input_encoding][, output_encoding])

    使用 other_public_key 作為第三方公鑰來計(jì)算并返回共享秘密(shared secret)。秘鑰用input_encoding 編碼。編碼方式為:'binary', 'hex', 或 'base64'。如果沒有指定編碼方式 ,默認(rèn)為 buffer。

    如果沒有指定返回編碼方式,將返回 buffer。

    diffieHellman.getPrime([encoding])

    用參數(shù) encoding 指明的編碼方式返回 Diffie-Hellman 質(zhì)數(shù),編碼方式為: 'binary', 'hex', 或 'base64'。 如果沒有指定編碼方式,將返回 buffer。

    diffieHellman.getGenerator([encoding])

    用參數(shù) encoding 指明的編碼方式返回 Diffie-Hellman 生成器,編碼方式為: 'binary', 'hex', 或 'base64'. 如果沒有指定編碼方式 ,將返回 buffer。

    diffieHellman.getPublicKey([encoding])

    用參數(shù) encoding 指明的編碼方式返回 Diffie-Hellman 公鑰,編碼方式為: 'binary', 'hex', 或 'base64'. 如果沒有指定編碼方式 ,將返回 buffer。

    diffieHellman.getPrivateKey([encoding])

    用參數(shù) encoding 指明的編碼方式返回 Diffie-Hellman 私鑰,編碼方式為: 'binary', 'hex', 或 'base64'. 如果沒有指定編碼方式 ,將返回 buffer。

    diffieHellman.setPublicKey(public_key[, encoding])

    設(shè)置 Diffie-Hellman 的公鑰,編碼方式為: 'binary', 'hex', 或 'base64',如果沒有指定編碼方式 ,默認(rèn)為 buffer。

    diffieHellman.setPrivateKey(private_key[, encoding])

    設(shè)置 Diffie-Hellman 的私鑰,編碼方式為: 'binary', 'hex', 或 'base64',如果沒有指定編碼方式 ,默認(rèn)為 buffer。

    crypto.getDiffieHellman(group_name)

    創(chuàng)建一個(gè)預(yù)定義的 Diffie-Hellman 秘鑰交換對(duì)象。支持的組: 'modp1', 'modp2', 'modp5' (定義于RFC 3526). 返回對(duì)象模仿了上述創(chuàng)建的crypto.createDiffieHellman()對(duì)象,但是不允許修改秘鑰交換(例如,diffieHellman.setPublicKey())。使用這套流程的好處是,雙方不需要生成或交換組組余數(shù),節(jié)省了計(jì)算和通訊時(shí)間。

    例如 (獲取一個(gè)共享秘密):

    var crypto = require('crypto');
    var alice = crypto.getDiffieHellman('modp5');
    var bob = crypto.getDiffieHellman('modp5');
    
    alice.generateKeys();
    bob.generateKeys();
    
    var alice_secret = alice.computeSecret(bob.getPublicKey(), null, 'hex');
    var bob_secret = bob.computeSecret(alice.getPublicKey(), null, 'hex');
    
    /* alice_secret and bob_secret should be the same */
    console.log(alice_secret == bob_secret);

    crypto.createECDH(curve_name)

    使用傳入的參數(shù) curve_name,創(chuàng)建一個(gè) Elliptic Curve (EC) Diffie-Hellman 秘鑰交換對(duì)象。

    類: ECDH

    這個(gè)類用來創(chuàng)建  EC Diffie-Hellman 秘鑰交換。

    通過 crypto.createECDH 返回。

    ECDH.generateKeys([encoding[, format]])

    生成 EC Diffie-Hellman 的秘鑰和公鑰,并返回指定格式和編碼的公鑰,它會(huì)傳遞給第三方。

    參數(shù) format'compressed', 'uncompressed', 或 'hybrid'. 如果沒有指定,將返回'uncompressed' 格式.

    參數(shù)encoding'binary', 'hex', 或 'base64'. 如果沒有指定編碼方式 ,將返回 buffer。

    ECDH.computeSecret(other_public_key[, input_encoding][, output_encoding])

    other_public_key 作為第三方公鑰計(jì)算共享秘密,并返回。秘鑰會(huì)以input_encoding來解讀。編碼是:'binary', 'hex', 或 'base64'。如果沒有指定編碼方式 ,默認(rèn)為 buffer。

    如果沒有指定編碼方式 ,將返回 buffer。

    ECDH.getPublicKey([encoding[, format]])

    用參數(shù) encoding 指明的編碼方式返回 EC Diffie-Hellman 公鑰,編碼方式為: 'compressed', 'uncompressed', 或'hybrid'. 如果沒有指定編碼方式 ,將返回'uncompressed' 。

    編碼是:'binary', 'hex', 或 'base64'。如果沒有指定編碼方式 ,默認(rèn)為 buffer。

    ECDH.getPrivateKey([encoding])

    用參數(shù) encoding 指明的編碼方式返回 EC Diffie-Hellman 私鑰,編碼是:'binary', 'hex', 或 'base64'。如果沒有指定編碼方式 ,默認(rèn)為 buffer。

    ECDH.setPublicKey(public_key[, encoding])

    設(shè)置  EC Diffie-Hellman 的公鑰,編碼方式為: 'binary', 'hex', 或 'base64',如果沒有指定編碼方式 ,默認(rèn)為 buffer。

    ECDH.setPrivateKey(private_key[, encoding])

    設(shè)置  EC Diffie-Hellman 的私鑰,編碼方式為: 'binary', 'hex', 或 'base64',如果沒有指定編碼方式 ,默認(rèn)為 buffer。

    例如 (包含一個(gè)共享秘密):

    var crypto = require('crypto');
    var alice = crypto.createECDH('secp256k1');
    var bob = crypto.createECDH('secp256k1');
    
    alice.generateKeys();
    bob.generateKeys();
    
    var alice_secret = alice.computeSecret(bob.getPublicKey(), null, 'hex');
    var bob_secret = bob.computeSecret(alice.getPublicKey(), null, 'hex');
    
    /* alice_secret and bob_secret should be the same */
    console.log(alice_secret == bob_secret);

    crypto.pbkdf2(password, salt, iterations, keylen[, digest], callback)

    異步 PBKDF2 提供了一個(gè)偽隨機(jī)函數(shù) HMAC-SHA1,根據(jù)給定密碼的長度,salt 和 iterations 來得出一個(gè)密鑰?;卣{(diào)函數(shù)得到兩個(gè)參數(shù) (err, derivedKey)。

    例如:

    crypto.pbkdf2('secret', 'salt', 4096, 512, 'sha256', function(err, key) {
      if (err)
        throw err;
      console.log(key.toString('hex'));  // 'c5e478d...1469e50'
    });

    crypto.getHashes() 里有支持的摘要函數(shù)列表。

    crypto.pbkdf2Sync(password, salt, iterations, keylen[, digest])

    異步 PBKDF2 函數(shù).  返回 derivedKey 或拋出錯(cuò)誤。

    crypto.randomBytes(size[, callback])

    生成一個(gè)密碼強(qiáng)度隨機(jī)的數(shù)據(jù):

    // async
    crypto.randomBytes(256, function(ex, buf) {
      if (ex) throw ex;
      console.log('Have %d bytes of random data: %s', buf.length, buf);
    });
    
    // sync
    try {
      var buf = crypto.randomBytes(256);
      console.log('Have %d bytes of random data: %s', buf.length, buf);
    } catch (ex) {
      // handle error
      // most likely, entropy sources are drained
    }

    注意:如果沒有足夠積累的熵來生成隨機(jī)強(qiáng)度的密碼,將會(huì)拋出錯(cuò)誤,或調(diào)用回調(diào)函數(shù)返回錯(cuò)誤。換句話說,沒有回調(diào)函數(shù)的 crypto.randomBytes 不會(huì)阻塞,即使耗盡所有的熵。

    crypto.pseudoRandomBytes(size[, callback])

    生成非密碼學(xué)強(qiáng)度的偽隨機(jī)數(shù)據(jù)。如果數(shù)據(jù)足夠長會(huì)返回一個(gè)唯一數(shù)據(jù),但是這個(gè)數(shù)可能是可以預(yù)期的。因此,當(dāng)不可預(yù)期很重要的時(shí)候,不要用這個(gè)函數(shù)。例如,在生成加密的秘鑰時(shí)。

    用法和 crypto.randomBytes 相同。

    類: Certificate

    這個(gè)類和簽過名的公鑰打交道。最重要的場景是處理 <keygen> 元素,<a rel="nofollow" href="http://www.openssl.org/docs/apps/spkac.html"">http://www.openssl.org/docs/apps/spkac.html。

    通過 crypto.Certificate 返回.

    Certificate.verifySpkac(spkac)

    根據(jù) SPKAC 返回 true 或 false。

    Certificate.exportChallenge(spkac)

    根據(jù)提供的SPKAC,返回加密的公鑰。

    Certificate.exportPublicKey(spkac)

    輸出和 SPKAC 關(guān)聯(lián)的編碼 challenge。

    crypto.publicEncrypt(public_key, buffer)

    使用 public_key 加密  buffer。目前僅支持 RSA。

    public_key 可以是對(duì)象或字符串。如果 public_key 是一個(gè)字符串,將會(huì)當(dāng)做沒有密碼的key,并會(huì)用RSA_PKCS1_OAEP_PADDING。

    public_key:

    注意: 所有的填充值 定義于constants 模塊.

    crypto.privateDecrypt(private_key, buffer)

    使用 private_key 來解密 buffer.

    private_key:

    注意: 所有的填充值 定義于constants 模塊.

    crypto.DEFAULT_ENCODING

    函數(shù)所用的編碼方式可以是字符串或 buffer ,默認(rèn)值是 'buffer'。這是為了加密模塊兼容默認(rèn) 'binary' 為編碼方式的遺留程序。

    注意,新程序希望用 buffer 對(duì)象,所以這是暫時(shí)手段。

    Recent API Changes

    在統(tǒng)一的流 API 概念出現(xiàn)前,在引入 Buffer 對(duì)象來處理二進(jìn)制數(shù)據(jù)之前,Crypto 模塊就已經(jīng)添加到 Node。

    因此,流相關(guān)的類里沒有其他的 Node 類里的典型方法,并且很多方法接收并返回二級(jí)制編碼的字符串,而不是 Buffers。在最近的版本中,這些函數(shù)改成默認(rèn)使用 Buffers。

    對(duì)于一些場景來說這是重大變化。

    例如,如果你使用默認(rèn)參數(shù)給簽名類,將結(jié)果返回給認(rèn)證類,中間沒有驗(yàn)證數(shù)據(jù),程序會(huì)正常工作。之前你會(huì)得到二進(jìn)制編碼的字符串,并傳遞給驗(yàn)證類,現(xiàn)在則是 Buffer。

    如果你之前使用的字符串?dāng)?shù)據(jù)在 Buffers 對(duì)象不能正常工作(比如,連接數(shù)據(jù),并存儲(chǔ)在數(shù)據(jù)庫里 )?;蛘吣銈鬟f了二進(jìn)制字符串給加密函數(shù),但是沒有指定編碼方式,現(xiàn)在就需要提供編碼參數(shù)。如果想切換回原來的風(fēng)格,將 crypto.DEFAULT_ENCODING 設(shè)置為  'binary'。注意,新的程序希望是 buffers,所以之前的方法只能作為臨時(shí)的辦法。

    • constants.RSA_NO_PADDING

    • constants.RSA_PKCS1_PADDING

    • constants.RSA_PKCS1_OAEP_PADDING

    • key : 包含有 PEM 編碼的私鑰

    • passphrase : 私鑰的密碼

    • padding : 填充值,如下:

    • constants.RSA_NO_PADDING

    • constants.RSA_PKCS1_PADDING

    • constants.RSA_PKCS1_OAEP_PADDING

    • key : 包含有 PEM 編碼的私鑰。

    • padding : 填充值,如下

    • DH_CHECK_P_NOT_SAFE_PRIME

    • DH_CHECK_P_NOT_PRIME

    • DH_UNABLE_TO_CHECK_GENERATOR

    • DH_NOT_SUITABLE_GENERATOR

    • key : 包含 PEM 編碼的私鑰

    • passphrase : 私鑰的密碼

Previous article: Next article: