<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### 穩定度: 2 - 穩定 使用`require('crypto')`來獲取這個模塊。 `crypto`模塊提供了一種封裝安全證書的方法,用來作為安全HTTPS網絡和HTTP鏈接的一部分。 它也提供了一個OpenSSL `hash`,`hamc`,`cipher`,`decipher`,`sign`和`vierify`方法的包裝集合。 #### crypto.setEngine(engine[, flags]) 加載和設置 一些/所有 OpenSSL功能引擎(由標記選擇)。 引擎可以通過id或 引擎共享庫的路徑 來選擇。 `flags`是可選的,并且有一個`ENGINE_METHOD_ALL`默認值。可以選一個或多個以下的標記(在常量模塊中定義)。 - 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() 返回一個支持的加密算法的名字數組。 例子: ~~~ var ciphers = crypto.getCiphers(); console.log(ciphers); // ['aes-128-cbc', 'aes-128-ccm', ...] ~~~ #### crypto.getHashes() 返回一個支持的哈希算法的名字數組。 例子: ~~~ var hashes = crypto.getHashes(); console.log(hashes); // ['sha', 'sha1', 'sha1WithRSAEncryption', ...] ~~~ #### crypto.getCurves() 返回一個支持的橢圓加密算法的名字數組。 例子: ~~~ var curves = crypto.getCurves(); console.log(curves); // ['secp256k1', 'secp384r1', ...] ~~~ #### crypto.createCredentials(details) > 穩定度: 0 - 棄用。使用`tls.createSecureContext`代替。 創建一個加密憑證對象,接受一個可選的帶鍵字典`details`: - pfx : 一個帶著`PFX`或`PKCS12`加密的私鑰,加密憑證和CA證書的字符串或`buffer`。 - key : 一個帶著`PEM`加密私鑰的字符串。 - passphrase : 一個私鑰或`pfx`密碼字符串。 - cert : 一個帶著`PEM`加密憑證的字符串。 - ca : 一個用來信任的`PEM`加密CA證書的字符串或字符串列表。 - crl : 一個`PEM`加密`CRL`的字符串或字符串列表。 - ciphers: 一個描述需要使用或排除的加密算法的字符串。更多加密算法的格式細節參閱`http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT` 如果沒有指定`ca`,那么`io.js`將會使用`http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt.`提供的默認公共可信任`CA`列表。 #### crypto.createHash(algorithm) 創建并返回一個哈希對象,一個指定算法的加密哈希用來生成哈希摘要。 `algorithm`依賴于平臺上的OpenSSL版本所支持的算法。例如`'sha1'`,`'md5'`,`'sha256'`,`'sha512'`等等。`openssl list-message-digest-algorithms`命令會展示可用的摘要算法。 例子:這個程序計算出一個文件的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); }); ~~~ #### Class: Hash 這個類用來創建數據哈希摘要。 這是一個同時可讀與可寫的流。寫入的數據用來計算哈希。一旦當流的可寫端終止,使用`read()`來獲取計算所得哈希摘要。遺留的`update`和`digest`方法同樣被支持。 通過`crypto.createHash`返回。 #### hash.update(data[, input_encoding]) 使用給定的`data`更新哈希內容,通過`input_encoding`指定的編碼可以是`'utf8'`,`'ascii'`或`'binary'`。如果沒有提供編碼,并且輸入是一個字符串,那么將會指定編碼為`'binary'`。如果`data`是一個`Buffer`那么`input_encoding`會被忽略。 它是流式數據,所以這個方法可以被調用多次。 #### hash.digest([encoding]) 計算所有的被傳遞的數據的摘要。`encoding`可以是`'binary'`,`'hex'`或`'base64'`。如果沒有指定編碼,那么一個`buffer`被返回。 注意:當調用了`digest()`方法之后,哈希對象不能再被使用了。 #### crypto.createHmac(algorithm, key) 創建并返回一個hmac對象,即通過給定的算法和密鑰生成的加密圖譜(cryptographic)。 這是一個既可讀又可寫的流。寫入的數據被用來計算hamc。一旦當流的可寫端終止,使用`read()`方法來獲取計算所得摘要值。遺留的`update`和`digest`方法同樣被支持。 `algorithm`依賴于平臺上的OpenSSL版本所支持的算法。參閱上文`createHash`。`key`是要使用的hmac密鑰。 #### Class: Hmac 用于創建hmac加密圖譜(cryptographic)的類。 通過`crypto.createHmac`返回。 #### hmac.update(data) 只用指定的`data`更新hmac內容。因為它是流式數據,所以這個方法可以被調用多次。 #### hmac.digest([encoding]) 計算所有的被傳遞的數據的hmac摘要。`encoding`可以是`'binary'`,`'hex'`或`'base64'`。如果沒有指定編碼,那么一個`buffer`被返回。 注意:當調用了`digest()`方法之后,hmac對象不能再被使用了。 #### crypto.createCipher(algorithm, password) 創建和返回一個`cipher`對象,指定指定的算法和密碼。 算法依賴于OpenSSL,如果`'aes192'`,等等。在最近的發行版中,`openssl list-cipher-algorithms`命令會展示可用的`cipher`算法。密碼被用來獲取密鑰和IV,必須是一個`'binary'`編碼的字符串或`buffer`。 這是一個既可讀又可寫的流。寫入的數據被用來計算哈希。一旦當流的可寫端終止,使用`read()`方法來獲取通過`cipher`計算所得的內容。遺留的`update`和`digest`方法同樣被支持。 注意:`createCipher`通過 無鹽`MD5`一次迭代所得的摘要 來調用 `OpenSSL函數`EVP_BytesToKey` 來派生密鑰。無鹽意味允許字典攻擊,即同樣的密碼經常可以用來創建同樣的密鑰。一次迭代并且無加密圖譜安全(non-cryptographically secure)以為著允許密碼被快速測試。 OpenSSL建議使用`pbkdf2`替代`EVP_BytesToKey`,推薦你通過`crypto.pbkdf2`然后調用`createCipheriv()`創建一個`cipher`流來派生一個密鑰和iv。 #### crypto.createCipheriv(algorithm, key, iv) 創建和返回一個`cipher`對象,指定指定的算法,密鑰和iv。 `algorithm`參數與`createCipher()`相同。`key`是被算法使用的源密鑰(raw key)。iv是初始化矢量(initialization vector)。 `key`和`iv`必須是`'binary'`編碼的字符串或`buffer`。 #### Class: Cipher 創建一個加密數據。 由`crypto.createCipher`和`crypto.createCipheriv`返回。 這是一個既可讀又可寫的流。寫入的文本數據被用來在可讀端生產被加密的數據。遺留的`update`和`final`方法同樣被支持。 #### cipher.update(data[, input_encoding][, output_encoding]) 通過`data`更新`cipher`,`input_encoding`中指定的編碼可以是`'utf8'`,`'ascii'`或`'binary'`。如果沒有提供編碼,那么希望接受到一個`buffer`。如果數據是一個`Buffer`,那么`input_encoding`將被忽略。 `output_encoding`指定了加密數據的輸出格式,可以是`'binary'`,`'base64'`或`'hex'`。如果沒有指定編碼,那么一個`buffer`會被返回。 返回一個加密內容,并且因為它是流式數據,所以可以被調用多次。 #### cipher.final([output_encoding]) 返回所有的剩余的加密內容,`output_encoding`可以是`'binary'`,`'base64'`或`'hex'`。如果沒有指定編碼,那么一個`buffer`會被返回。 注意:當調用了`final()`方法之后,cipher對象不能再被使用了。 #### cipher.setAutoPadding(auto_padding=true) 你可以禁用自動填充輸入數據至塊大小。如果`auto_padding`為`false`,那么整個輸入數據的長度必須`cipher`的塊大小的整數倍,否則會失敗。這對非標準填充非常有用,如使用0x0替代PKCS填充。你必須在`cipher.final`之前調用它。 #### cipher.getAuthTag() 對于已認證加密模式(當前支持:GCM),這個方法返回一個從給定數據計算所得的代表了認證標簽的`Buffer`。必須在`final`方法被調用后調用。 #### cipher.setAAD(buffer) 對于已認證加密模式(當前支持:GCM),這個方法設置被用于額外已認證數據(AAD)輸入參數的值。 #### crypto.createDecipher(algorithm, password) 使用給定算法和密鑰,創建并返回一個解密器對象。這是上文`createCipher()`的一個鏡像。 #### crypto.createDecipheriv(algorithm, key, iv) 使用給定算法,密鑰和iv,創建并返回一個解密器對象。這是上文`createCipheriv()`的一個鏡像。 #### Class: Decipher 解密數據類。 通過`crypto.createDecipher`和`crypto.createDecipheriv`返回。 這是一個既可讀又可寫的流。寫入的被加密的數據被用來在可讀端生產文本數據。遺留的`update`和`final`方法同樣被支持。 #### decipher.update(data[, input_encoding][, output_encoding]) 通過`data`更新`decipher`,編碼可以是`'binary'`,`'base64'`或`'hex'`。如果沒有提供編碼,那么希望接受到一個`buffer`。如果數據是一個`Buffer`,那么`input_encoding`將被忽略。 `output_encoding`指定了解密數據的輸出格式,可以是`'binary'`,`'ascii'`或`'utf8'`。如果沒有指定編碼,那么一個`buffer`會被返回。 #### decipher.final([output_encoding]) 返回所有的剩余的文本數據,`output_encoding`可以是`'binary'`,`'ascii'`或`'utf8'`。如果沒有指定編碼,那么一個`buffer`會被返回。 注意:當調用了`final()`方法之后,decipher對象不能再被使用了。 #### decipher.setAutoPadding(auto_padding=true) 如數據沒有使用標準塊填充阻止`decipher.final`檢查和刪除它來加密,你可以禁用自動填充。那么整個輸入數據的長度必須`cipher`的塊大小的整數倍,否則會失敗。你必須在將數據導流至`decipher.update`前調用它。 #### decipher.setAuthTag(buffer) 對于已認證加密模式(當前支持:GCM),這個方法必須被傳遞,用來接受認證標簽。如果沒有提供標簽或密文被干擾,最終會拋出一個錯誤。 #### decipher.setAAD(buffer) 對于已認證加密模式(當前支持:GCM),這個方法設置被用于額外已認證數據(AAD)輸入參數的值。 #### crypto.createSign(algorithm) 使用指定的算法,創建并返回一個數字簽名類。在最近的OpenSSL發行版中,`openssl list-public-key-algorithms`會列出所有支持的數字簽名算法。例如`'RSA-SHA256'`。 #### Class: Sign 用于生成數字簽名的類。 通過`crypto.createSign`返回。 `Sign`對象是一個可寫流。寫入的數據用來生成數字簽名。一旦所有的數據被寫入,`sign`方法會返回一個數字簽名。遺留的`update`方法也支持。 #### sign.update(data) 使用`data`更新`sign`對象。因為它是流式的所以這個方法可以被調用多次。 #### sign.sign(private_key[, output_format]) 根據所有通過`update`方法傳入的數據計算數字簽名。 `private_key`可以是一個對象或一個字符串,如果`private_key`是一個字符串,那么它被當做沒有密碼的密鑰。 **private_key**: - key : 包含`PEM`編碼私鑰的字符串。 - passphrase : 一個私鑰密碼的字符串。 返回的數字簽名編碼由`output_format`決定,可以是`'binary'`,`'hex'`或`'base64'`。如果沒有指定編碼,會返回一個`buffer`。 注意,在調用了`sign()`后,`sign`對象不能再使用了。 #### crypto.createVerify(algorithm) 使用給定的算法,創建并返回一個驗證器對象。這個對象是`sign`對象的鏡像。 #### Class: Verify 用來驗證數字簽名的類。 由`crypto.createVerify`返回。 `Verify`對象是一個可寫流。寫入的數據用來驗證提供的數字簽名。一旦所有的數據被寫入,`verify`方法會返回`true`如果提供的數字簽名有效。遺留的`update`方法也支持。 #### verifier.update(data) 使用`data`更新`verifier`對象。因為它是流式的所以這個方法可以被調用多次。 #### verifier.verify(object, signature[, signature_format]) 通過使用`object`和`signature`驗證被簽名的數據。`object`是一個包含了PEM編碼對象的字符串,這個對象可以是RSA公鑰,DSA公鑰或X.509證書。`signature`是先前計算出來的數字簽名,`signature_format`可以是`'binary'`,`'hex'`或`'base64'`。如果沒有指定編碼,那么希望收到一個`buffer`。 返回值是`true`或`false`根據數字簽名對于數據和公鑰的有效性。 注意,在調用了`verify()`后,`verifier`對象不能再使用了。 #### crypto.createDiffieHellman(prime_length[, generator]) 創建一個迪菲-赫爾曼密鑰交換對象(Diffie-Hellman key exchange object),并且根據`prime_length`生成一個質數,可以指定一個可選的數字生成器。如果沒有指定生成器,將使用`2`。 #### crypto.createDiffieHellman(prime[, prime_encoding][, generator][, generator_encoding]) 通過給定的質數,和可選的生成器,創建一個迪菲-赫爾曼密鑰交換對象(Diffie-Hellman key exchange object)。`generator`可以是一個數字,字符串或`Buffer`。如果沒有指定生成器,將使用`2`。`prime_encoding`和`generator_encoding`可以是`'binary'`,`'hex'`或`'base64'`。如果沒有指定`prime_encoding`,那么希望`prime`是一個`Buffer`。如果沒有指定`generator_encoding`,那么希望`generator`是一個`Buffer`。 #### Class: DiffieHellman 叫來創建迪菲-赫爾曼密鑰交換的類。 通過`crypto.createDiffieHellman`返回。 #### diffieHellman.verifyError 一個包含了所有警告和/或錯誤的位域,作為檢查初始化時的執行結果。以下是這個屬性的合法屬性(被常量模塊定義): - DH_CHECK_P_NOT_SAFE_PRIME - DH_CHECK_P_NOT_PRIME - DH_UNABLE_TO_CHECK_GENERATOR - DH_NOT_SUITABLE_GENERATOR #### diffieHellman.generateKeys([encoding]) 生成一個 私和公 迪菲-赫爾曼 密鑰值,并且返回一個指定編碼的公鑰。這個密鑰可以被轉移給第三方。編碼可以是`'binary'`,`'hex'`或`'base64'`。如果沒有提供編碼,那么會返回一個`buffer`。 #### diffieHellman.computeSecret(other_public_key[, input_encoding][, output_encoding]) 使用`other_public_key`作為第三方密鑰來計算共享秘密(shared secret),并且返回計算結果。提供的密鑰會以`input_encoding`來解讀,并且秘密以`output_encoding`來編碼。編碼可以是`'binary'`,`'hex'`或`'base64'`。如果沒有提供編碼,那么會返回一個`buffer`。 如果沒有指定`output_encoding`,那么會返回一個`buffer`。 #### diffieHellman.getPrime([encoding]) 根據指定編碼返回一個迪菲-赫爾曼質數,編碼可以是`'binary'`,`'hex'`或`'base64'`。如果沒有提供編碼,那么會返回一個`buffer`。 #### diffieHellman.getGenerator([encoding]) 根據指定編碼返回一個迪菲-赫爾曼生成器,編碼可以是`'binary'`,`'hex'`或`'base64'`。如果沒有提供編碼,那么會返回一個`buffer`。 #### diffieHellman.getPublicKey([encoding]) 根據指定編碼返回一個迪菲-赫爾曼公鑰,編碼可以是`'binary'`,`'hex'`或`'base64'`。如果沒有提供編碼,那么會返回一個`buffer`。 #### diffieHellman.getPrivateKey([encoding]) 根據指定編碼返回一個迪菲-赫爾曼私鑰,編碼可以是`'binary'`,`'hex'`或`'base64'`。如果沒有提供編碼,那么會返回一個`buffer`。 #### diffieHellman.setPublicKey(public_key[, encoding]) 設置迪菲-赫爾曼公鑰,密鑰編碼可以是`'binary'`,`'hex'`或`'base64'`。如果沒有提供編碼,那么期望接收一個`buffer`。 #### diffieHellman.setPrivateKey(private_key[, encoding]) 設置迪菲-赫爾曼私鑰,密鑰編碼可以是`'binary'`,`'hex'`或`'base64'`。如果沒有提供編碼,那么期望接收一個`buffer`。 #### crypto.getDiffieHellman(group_name) 創建一個預定義的迪菲-赫爾曼密鑰交換對象。支持的群組有:'modp1', 'modp2', 'modp5' (由RFC 2412定義) 和 'modp14', 'modp15', 'modp16', 'modp17', 'modp18' (由RFC 3526定義)。返回的對象模仿`crypto.createDiffieHellman()`創建的對象的借口,但是不允許交換密鑰(如通過`diffieHellman.setPublicKey()`)。執行這套流程的好處是雙方不需要事先生成或交換組余數,節省了處理和通信時間。 例子(獲取一個共享秘密): ~~~ 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) 使用由`curve_name`指定的預定義橢圓,創建一個橢圓曲線(EC)迪菲-赫爾曼密鑰交換對象。使用`getCurves()`來獲取可用的橢圓名列表。在最近的發行版中,`openssl ecparam -list_curves`命令也會展示可用的橢圓曲線的名字和簡述。 #### Class: ECDH 用于EC迪菲-赫爾曼密鑰交換的類。 由`crypto.createECDH`返回。 #### ECDH.generateKeys([encoding[, format]]) 生成一個 私/公 EC迪菲-赫爾曼密鑰值,并且返回指定格式和編碼的公鑰。這個密鑰可以被轉移給第三方。 `format`指定點的編碼,可以是`'compressed'`,`'uncompressed'`或`'hybrid'`。如果沒有指定,那么點將是`'uncompressed'`格式。 編碼可以是`'binary'`,`'hex'`或`'base64'`。如果沒有提供編碼,那么會返回一個`buffer`。 #### ECDH.computeSecret(other_public_key[, input_encoding][, output_encoding]) 使用`other_public_key`作為第三方密鑰來計算共享秘密(shared secret),并且返回計算結果。提供的密鑰會以`input_encoding`來解讀,并且秘密以`output_encoding`來編碼。編碼可以是`'binary'`,`'hex'`或`'base64'`。如果沒有提供編碼,那么會返回一個`buffer`。 如果沒有指定`output_encoding`,那么會返回一個`buffer`。 #### ECDH.getPublicKey([encoding[, format]]) 返回指定編碼和格式的EC迪菲-赫爾曼公鑰。 `format`指定點的編碼,可以是`'compressed'`,`'uncompressed'`或`'hybrid'`。如果沒有指定,那么點將是`'uncompressed'`格式。 編碼可以是`'binary'`,`'hex'`或`'base64'`。如果沒有提供編碼,那么會返回一個`buffer`。 #### ECDH.getPrivateKey([encoding]) 返回指定編碼的EC迪菲-赫爾曼私鑰,編碼可以是`'binary'`,`'hex'`或`'base64'`。如果沒有提供編碼,那么會返回一個`buffer`。 #### ECDH.setPublicKey(public_key[, encoding]) 設置EC迪菲-赫爾曼公鑰。密鑰編碼可以是`'binary'`,`'hex'`或`'base64'`。如果沒有提供編碼,那么期望接收一個`buffer`。 #### ECDH.setPrivateKey(private_key[, encoding]) 設置EC迪菲-赫爾曼私鑰。密鑰編碼可以是`'binary'`,`'hex'`或`'base64'`。如果沒有提供編碼,那么期望接收一個`buffer`。 例子(獲取一個共享秘密): ~~~ 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函數。提供被選擇的HAMC摘要函數(默認為SHA1)來獲取一個請求長度的密碼密鑰,鹽和迭代數。回調函數有兩個參數:(`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()`獲取支持的摘要函數列表。 #### crypto.pbkdf2Sync(password, salt, iterations, keylen[, digest]) 同步PBKDF2函數。返回`derivedKey`或拋出錯誤。 #### crypto.randomBytes(size[, callback]) 生成有密碼圖譜一般健壯的偽隨機數據,用處: ~~~ // 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 } ~~~ 注意:如果熵不足,那么它會阻塞。盡管它從不話費超過幾毫秒。唯一可以想到的阻塞是情況是,當整個系統的熵還是很低時,在其之后啟動。 #### Class: Certificate 這個類用來處理已簽名公鑰 & 挑戰(challenges)。最常用的是它的一系列處理`<keygen>`元素的函數。`http://www.openssl.org/docs/apps/spkac.html`。 通過`crypto.Certificate`返回。 #### Certificate.verifySpkac(spkac) 返回`ture`或`false`,依賴于SPKAC的有效性。 #### Certificate.exportChallenge(spkac) 導出編碼好的公鑰從指定的SPKAC。 #### Certificate.exportPublicKey(spkac) 導出編碼好的挑戰(challenge)從指定的SPKAC。 #### crypto.publicEncrypt(public_key, buffer) 使用`public_key`加密`buffer`。目前只支持RSA。 `public_key`可是是一個對象或一個字符串。如果`public_key`是一個字符串,它會被視作沒有密碼的密鑰并且將使用`RSA_PKCS1_OAEP_PADDING`。因為`RSA`公鑰可以用來從你傳遞給這個方法的密鑰來獲取。 **public_key**: - key : 一個包含PEM加密的私鑰字符串 - passphrase : 一個可選的私鑰密碼字符串 - **padding** : 一個可選的填充值,以下值之一: - constants.RSA_NO_PADDING - constants.RSA_PKCS1_PADDING - constants.RSA_PKCS1_OAEP_PADDING 注意:所有的填充值都被常量模塊所定義。 #### crypto.publicDecrypt(public_key, buffer) 詳情參閱上文。與`crypto.publicEncrypt`有相同API。默認填充值是`RSA_PKCS1_PADDING`。 #### crypto.privateDecrypt(private_key, buffer) 使用`private_key`解密`buffer`。 `private_key`可以是一個對象或一個字符串。如果`private_key`是一個字符串,它會當做沒有密碼的密鑰,并且使用`RSA_PKCS1_OAEP_PADDING`。 **public_key**: - key : 一個包含PEM加密的私鑰字符串 - passphrase : 一個可選的私鑰密碼字符串 - **padding** : 一個可選的填充值,以下值之一: - constants.RSA_NO_PADDING - constants.RSA_PKCS1_PADDING - constants.RSA_PKCS1_OAEP_PADDING 注意:所有的填充值都被常量模塊所定義。 #### crypto.privateEncrypt(private_key, buffer) 詳情參閱上文。與`crypto.privateDecrypt`有相同API。默認填充值是`RSA_PKCS1_PADDING`。 #### crypto.DEFAULT_ENCODING 默認編碼是用于接受字符串或`buffer`的函數。默認值是`'buffer'`,所以默認是使用`Buffer`對象的。這被用來與舊的以`'binary'`為默認編碼的程序更好地兼容。 注意新的程序仍可能期望使用`buffer`,所以只將它作為一個臨時措施。 #### 近期的API改變 `Crypto`模塊在還沒有統一的流API概念,以及沒有`Buffer`對象來處理二進制數據前就加入了`Node.js`。 因為這樣,它的流類沒有其他`io.js`類的典型類,而且很多方法默認接受和返回二進制字符串而不是`Buffer`。這些函數將被改成默認接受和返回`Buffer`。 這對于一些但不是所有的使用場景來說是巨大的改變。 例如,如果你現在對`Sign`類使用默認參數,并且傳遞`Verify`類的結果,不檢查數據,那么在以前它將會繼續工作。在你曾經得到二進制字符串的地方,你將會得到一個`Buffer`。 但是,如果你正在使用那些使用字符串可以,但使用`Buffer`不能工作的數據(如連接它們,存儲進數據庫等)。或者對`crypto`函數不傳遞編碼參數來傳遞二進制字符串。那么以后,你需要提供你想要指定的編碼。如果要將默認的使用風格,轉換為舊風格的話,將`crypto.DEFAULT_ENCODING`域設置為`'binary'`。注意新的程序仍可能期望接受`buffer`,所以這僅作為一個臨時措施。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看