crypto.privateDecrypt()方法用于使用privateKey.buffer解密缓冲区的内容,该私钥先前已使用相应的公钥(即crypto.publicEncrypt())进行了加密。
用法:
crypto.privateDecrypt( privateKey, buffer )
参数:该方法接受上述和以下所述的两个参数:
- privateKey:它可以保存对象,字符串,缓冲区或键对象类型的数据。
- oaepHash这是用于“ OAEP”填充的字符串类型的哈希函数。默认值为“ sha1”。
- oaepLabel:它是用于“ OAEP”填充的标签。如果未指定,则不使用标签。它的类型为Buffer,TypedArray或DataView。
- padding:它是在crypto.constants中定义的可选填充值,可以是crypto.constants.RSA_NO_PADDING,crypto.constants.RSA_PKCS1_PADDING或crypto.constants.RSA_PKCS1_OAEP_PADDING。它是crypto.constants类型。
- buffer:它的类型为Buffer,TypedArray或DataView。
返回值:它返回带有解密内容的新缓冲区。
以下示例说明了Node.js中crypto.privateDecrypt()方法的使用:
范例1:
// Node.js program to demonstrate the
// crypto.privateDecrypt() method
// Including the crypto and fs modules
var crypto = require('crypto');
var fs = require('fs');
// Reading the Public Key
pubK = fs.readFileSync('pub.key').toString();
// Passing the text to be encrypted using private key
var buf = Buffer.from('This is secret code', 'utf8');
// Encrypting the text
secretData = crypto.publicEncrypt(pubK, buf);
// Printing the encrypted text
console.log(secretData);
// Reading the Private key
privK = fs.readFileSync('priv.key').toString();
// Decrypting the text using public key
origData = crypto.privateDecrypt(privK, secretData);
console.log();
// Printing the original content
console.log(origData);
输出:
<Buffer 58 dd 76 8f cb 25 52 2b e7 3a b2 1b 0f 43 aa e0 df 65 fa 1d 3b 31 6f b7 f9 47 06 d5 f7 72 19 cd 2f 67 66 27 00 bb 43 8e 64 38 07 38 28 aa07 59 b4 60 ... > <Buffer 54 68 69 73 20 69 73 20 73 65 63 72 65 74 20 63 6f 64 65 >
范例2:
// Node.js program to demonstrate the
// crypto.privateDecrypt() method
// Including crypto and fs module
const crypto = require('crypto');
const fs = require("fs");
// Using a function generateKeyFiles
function generateKeyFiles() {
const keyPair = crypto.generateKeyPairSync('rsa', {
modulusLength:530,
publicKeyEncoding:{
type:'spki',
format:'pem'
},
privateKeyEncoding:{
type:'pkcs8',
format:'pem',
cipher:'aes-256-cbc',
passphrase:''
}
});
// Creating public and private key file
fs.writeFileSync("public_key", keyPair.publicKey);
fs.writeFileSync("private_key", keyPair.privateKey);
}
// Generate keys
generateKeyFiles();
// Creating a function to encrypt string
function encryptString (plaintext, publicKeyFile) {
const publicKey = fs.readFileSync(publicKeyFile, "utf8");
// publicEncrypt() method with its parameters
const encrypted = crypto.publicEncrypt(
publicKey, Buffer.from(plaintext));
return encrypted.toString("base64");
}
// Creating a function to decrypt string
function decryptString (ciphertext, privateKeyFile) {
const privateKey = fs.readFileSync(privateKeyFile, "utf8");
// privateDecrypt() method with its parameters
const decrypted = crypto.privateDecrypt(
privateKey, Buffer.from(ciphertext, "base64"));
return decrypted.toString("utf8");
}
// Defining a text to be encrypted
const plainText = "Geeks!";
// Defining encrypted text
const encrypted = encryptString(plainText, "./public_key");
// Prints plain text
console.log("Plaintext:", plainText);
console.log();
// Prints buffer of encrypted content
console.log("Encrypted Text:", encrypted);
console.log();
// Prints buffer of decrypted content
console.log("Decrypted Text:",
decryptString(encrypted, "private_key"));
输出:
Plaintext:Geeks! Encrypted Text: ACks6H7InpaeGdI4w9MObyD73YB7N1V0nVsG5Jl10SNeH3no6gfgjeD4ZFsSFhCXzFkognMGbRNsg0BReVOHxRs7eQ== Decrypted Text:Geeks!
参考: https://nodejs.org/api/crypto.html#crypto_crypto_privatedecrypt_privatekey_buffer
相关用法
- Node.js GM drawCircle()用法及代码示例
- Node.js GM drawBezier()用法及代码示例
- Node.js GM drawPolyline()用法及代码示例
- Node.js GM drawArc()用法及代码示例
- Node.js GM drawEllipse()用法及代码示例
- Node.js GM monochrome()用法及代码示例
- Node.js GM equalize()用法及代码示例
- Node.js GM enhance()用法及代码示例
- Node.js GM drawPolygon()用法及代码示例
- Node.js GM whitePoint()用法及代码示例
注:本文由纯净天空筛选整理自nidhi1352singh大神的英文原创作品 Node.js | crypto.privateDecrypt() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。