示例中的Terminal使用信息"/>
无法通过代码示例中的Terminal使用信息
我是JS的新手,并尝试编写一个简单的代码通过Javascript加密和解密信息,示例代码如下。它一直工作到加密为止,但是我想将“ mystr”带回解密部分,但是这是行不通的。任何提示都会有所帮助,谢谢!
var crypto = require('crypto');
var mykey = crypto.createCipher('aes-256-cbc', 'mypassword');
const readline = require('readline').createInterface({
input: process.stdin,
output: process.stdout
})
readline.question(`The string to Encrypt?`, (secret) => {
var mystr = mykey.update(`${secret}`, 'utf8', 'hex')
mystr += mykey.final('hex');
console.log(`${mystr}`);
// readline.close()
var mystr2 = mykey.update('mystr', 'hex', 'utf8');
mystr2 += mykey.final('utf8');
console.log(`${decrypt}`);
readline.close()
})
以下错误:
pooja@X1-Carbon-6:~/Documents/weiterbildung/javascript$ node encryption.js
The string to Encrypt?pooja
60c1fddc88b9048273e0eb532146d72c
readline.js:924
throw err;
^
Error: Trying to add data in unsupported state
at Error (native)
at Cipher.update (crypto.js:140:26)
at /home/pooja/Documents/weiterbildung/javascript/encryption.js:18:24
at Interface._onLine (readline.js:208:5)
at Interface._line (readline.js:549:8)
at Interface._ttyWrite (readline.js:826:14)
at ReadStream.onkeypress (readline.js:105:10)
at emitTwo (events.js:87:13)
at ReadStream.emit (events.js:172:7)
at emitKeys (readline.js:1250:14)
回答如下:您需要创建一个解密器:
var crypto = require('crypto');
const readline = require('readline').createInterface({
input: process.stdin,
output: process.stdout
})
readline.question(`The string to Encrypt?`, (secret) => {
//create cipher
var cipher = crypto.createCipher('aes-256-cbc', 'mypassword');
//encrypt string
var mystr = cipher.update(`${secret}`, 'utf8', 'hex')
mystr += cipher.final('hex');
console.log(`${mystr}`);
//create decipher
var decipher = crypto.createDecipher('aes-256-cbc', 'mypassword');
//decrypt string
var mystr2 = decipher.update(`${mystr}`, 'hex', 'utf8')
mystr2 += decipher.final('utf8');
console.log(mystr2);
readline.close()
})
有关更多信息,请点击此处:https://www.w3schools/nodejs/ref_crypto.asp
更多推荐
无法通过代码示例中的Terminal使用信息
发布评论