Node.js 中的 crypto.privateEncrypt() 方法
将用于通过使用函数传递给定的私有密钥参数给定的数据内容进行加密。crypto.privateEncrypt()
语法
crypto.privateEncrypt(privateKey, buffer)
参数
上述参数描述如下-
privateKey –它可以包含以下数据类型–Object、String、Buffer或KeyObject。
key –此密钥是一个“PEM”编码的私钥。键可以是字符串、缓冲区或KeyObject类型。
密码 -这是私钥的可选密码值。
padding –这是在crypto.constants中定义的可选值。
buffer –该字段包含要解密的数据内容。可能的缓冲区类型有:string、TypedArray、Buffer、ArrayBuffer、DataView。
示例
创建一个具有名称的文件-privateEncrypt.js并复制以下代码片段。创建文件后,使用以下命令运行此代码,如下例所示-
node privateEncrypt.js
私有加密.js
//Node.js程序演示crypto.privateEncrypt()方法的流程 //导入加密和fs模块 const crypto = require('crypto'); const fs = require("fs"); //使用generateKeyPairSync()方法生成密钥文件 function generateKeyFiles() { const keyPair = crypto.generateKeyPairSync('rsa', { modulusLength: 530, publicKeyEncoding: { type: 'spki', format: 'pem' }, privateKeyEncoding: { type: 'pkcs8', format: 'pem', cipher: 'aes-256-cbc', passphrase: '' } }); //在以下文件中写入密钥 fs.writeFileSync("private_key", keyPair.privateKey); } //调用生成密钥方法 generateKeyFiles(); //加密传递的字符串 function encryptString (plaintext, publicKeyFile) { const publicKey = fs.readFileSync(publicKeyFile, "utf8"); //使用privateEncrypt()方法和公钥加密数据 const encrypted = crypto.privateEncrypt( publicKey, Buffer.from(plaintext)); return encrypted.toString("base64"); } //以下数据将被加密和解密 const plainText = "nhooo!"; //调用下面的方法来加密字符串 const encrypted = encryptString(plainText, "./private_key"); //打印纯文本 console.log("Plaintext:", plainText); //打印加密文本 console.log("加密文本: ", encrypted); console.log();输出结果
C:\home\node>> node privateEncrypt.js Plaintext: nhooo! 加密文本: AhphoL+l/e739LkdfCAm2XuiddgTG7jjdGlLviiRqD4LyTtxJmpkgq5bSkyI7Og4XlBtszBB9HLQRH T5j850ZAxGYA==
示例
让我们再看一个例子。
//Node.js程序演示crypto.privateEncrypt()方法的流程 //导入加密和fs模块 const crypto = require('crypto'); const fs = require("fs"); //使用generateKeyPairSync()方法生成密钥文件 function generateKeyFiles() { const keyPair = crypto.generateKeyPairSync('rsa', { modulusLength: 530, publicKeyEncoding: { type: 'spki', format: 'pem' }, privateKeyEncoding: { type: 'pkcs8', format: 'pem', cipher: 'aes-256-cbc', passphrase: '' } }); //在以下文件中写入密钥 fs.writeFileSync("private_key", keyPair.privateKey); } //调用生成密钥方法 generateKeyFiles(); //加密传递的字符串 function encryptString (plaintext, publicKeyFile) { const publicKey = fs.readFileSync(publicKeyFile, "utf8"); //使用privateEncrypt()方法和公钥加密数据 const encrypted = crypto.privateEncrypt( publicKey, Buffer.from(plaintext)); return encrypted; } //以下数据将被加密和解密 const plainText = "nhooo!"; //调用下面的方法来加密字符串 const encrypted = encryptString(plainText, "./private_key"); //打印纯文本 console.log("Plaintext:", plainText); //打印加密文本 console.log("加密缓冲区: ", encrypted); console.log();输出结果
C:\home\node>> node privateEncrypt.js Plaintext: nhooo! 加密缓冲区: