<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>

                [TOC] <br/><br/><br/> # <b style="color:#4F4F4F;">簡介說明</b> 原文鏈接: - [crypto](https://github.com/nodejs/node/blob/main/doc/api/crypto.md) ``` 版本:crypto 作用:提供了加密功能,包括對 OpenSSL 的哈希、HMAC、加密、解密、簽名、以及驗證功能的一整套封裝 ``` <br/> # <b style="color:#4F4F4F;">crypto</b> <br/> # <span style="color:#619BE4">*createHash()</span> ***** 創建一個Hash 算法實例 <br/> ### 示例內容 <span style="color:red;">1. 舉例說明</span> ``` const filename = process.argv[2]; const crypto = require('crypto'); const fs = require('fs'); const hash = crypto.createHash('sha256'); const input = fs.createReadStream(filename); input.on('readable', () => { // 哈希流只會生成一個元素。 const data = input.read(); if (data) hash.update(data); else { console.log(`${hash.digest('hex')} ${filename}`); } }); ``` <br/> # <span style="color:#619BE4">*createHmac()</span> ***** 創建一個Hmac算法實例 <br/> ### 示例內容 <span style="color:red;">1. 舉例說明</span> ``` const filename = process.argv[2]; const crypto = require('crypto'); const fs = require('fs'); const hmac = crypto.createHmac('sha256', '密鑰'); const input = fs.createReadStream(filename); input.on('readable', () => { // 哈希流只會生成一個元素。 const data = input.read(); if (data) hmac.update(data); else { console.log(`${hmac.digest('hex')} ${filename}`); } }); ``` <br/> # <span style="color:#619BE4">*createDiffieHellman()</span> ***** 創建一個DH算法實例 <br/> ### 示例內容 <span style="color:red;">1. 舉例說明</span> ``` const crypto = require('crypto'); // xiaoming's keys: var ming = crypto.createDiffieHellman(512); var ming_keys = ming.generateKeys(); var prime = ming.getPrime(); var generator = ming.getGenerator(); // xiaohong's keys: var hong = crypto.createDiffieHellman(prime, generator); var hong_keys = hong.generateKeys(); // xiaohong算出 var hong_secret = hong.computeSecret(ming_keys); // xiaoming算出 var ming_secret = ming.computeSecret(hong_keys); // print secret: console.log('Secret of Xiao Ming: ' + ming_secret.toString('hex')); console.log('Secret of Xiao Hong: ' + hong_secret.toString('hex')); ``` <br/> # <span style="color:#619BE4">*createDecipheriv()</span> ***** 創建一個對稱解密算法實例 <br/> # <span style="color:#619BE4">*createCipheriv()</span> ***** 創建一個對稱加密算法實例 <br/> ### 示例內容 <span style="color:red;">1. 舉例說明</span> ``` const crypto = require('crypto'); // 加密 function genSign(src, key, iv) { let sign = ''; const cipher = crypto.createCipheriv('aes-128-cbc', key, iv); sign += cipher.update(src, 'utf8', 'hex'); sign += cipher.final('hex'); return sign; } // 解密 function deSign(sign, key, iv) { let src = ''; const cipher = crypto.createDecipheriv('aes-128-cbc', key, iv); src += cipher.update(sign, 'hex', 'utf8'); src += cipher.final('utf8'); return src; } // ase-128-cbc 加密算法要求key和iv長度都為16 const key = Buffer.from('9vApxLk5G3PAsJrM', 'utf8'); const iv = Buffer.from('FnJL7EDzjqWjcaY9', 'utf8'); // 加密 const sign = genSign('hello world', key, iv); console.log(sign); // 764a669609b0c9b041faeec0d572fd7a // 解密 const src = deSign('764a669609b0c9b041faeec0d572fd7a', key, iv); console.log(src); // hello world module.exports = {genSign, deSign}; ``` <br/> # <span style="color:#619BE4">*privateEncrypt()</span> ***** 非對稱加密私鑰算法實例 <br/> ### 示例內容 <span style="color:red;">1. 舉例說明</span> ``` const fs = require('fs'), crypto = require('crypto'); // 從文件加載key: function loadKey(file) { // key實際上就是PEM編碼的字符串: return fs.readFileSync(file, 'utf8'); } let prvKey = loadKey('./rsa-prv.pem'), pubKey = loadKey('./rsa-pub.pem'), message = 'Hello, world!'; // 使用私鑰加密: let enc_by_prv = crypto.privateEncrypt(prvKey, Buffer.from(message, 'utf8')); console.log('encrypted by private key: ' + enc_by_prv.toString('hex')); let dec_by_pub = crypto.publicDecrypt(pubKey, enc_by_prv); console.log('decrypted by public key: ' + dec_by_pub.toString('utf8')); ``` <br/> # <span style="color:#619BE4">*scrypt()</span> ***** 提供異步的 scrypt 實現。 Scrypt 是一個基于密碼的密鑰派生函數,被設計為在計算和內存方面都非常高成本,目的是使暴力破解無法成功。 <br/> # <span style="color:#619BE4">*scryptSync()</span> ***** 提供同步的 scrypt 實現。 Scrypt 是一個基于密碼的密鑰派生函數,被設計為在計算和內存方面都非常高成本,目的是使暴力破解無法成功。 <br/> # <span style="color:#619BE4">*sign()</span> ***** 為數據簽名,防止偽造 <br/> # <span style="color:#619BE4">*verify()</span> ***** 驗證數據簽名 <br/>
                  <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>

                              哎呀哎呀视频在线观看