最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

无法通过代码示例中的Terminal使用信息

网站源码admin22浏览0评论

无法通过代码示例中的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

发布评论

评论列表(0)

  1. 暂无评论