Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 好节点JS AES兼容加密解密模块_Node.js - Fatal编程技术网

Node.js 好节点JS AES兼容加密解密模块

Node.js 好节点JS AES兼容加密解密模块,node.js,Node.js,我正在寻找一个节点JS模块,它可以像下面的PHP代码那样加密和解密字符串: function encrypt($decrypted) { // salt $salt = '!mysalthere123456789'; // Build a 256-bit $key which is a SHA256 hash of $salt and $password. $key = hash('SHA256', $salt ."supersecretkey13456789",

我正在寻找一个节点JS模块,它可以像下面的PHP代码那样加密和解密字符串:

function encrypt($decrypted) {
    // salt
    $salt = '!mysalthere123456789';
    // Build a 256-bit $key which is a SHA256 hash of $salt and $password.
    $key = hash('SHA256', $salt ."supersecretkey13456789", true);
    // Build $iv and $iv_base64. We use a block size of 128 bits (AES compliant) and CBC mode. (Note: ECB mode is inadequate as IV is not used.)
    srand();
    $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND);
    if (strlen($iv_base64 = rtrim(base64_encode($iv), '=')) != 22)
        return false;
        // Encrypt $decrypted and an MD5 of $decrypted using $key. MD5 is fine to use here because it's just to verify successful decryption.
    $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $decrypted . md5($decrypted), MCRYPT_MODE_CBC, $iv));
    // We're done!
    return $iv_base64 . $encrypted;
}
基本上,这将返回一个随机加密字符串,即使您保持相同的IV和密码,但与许多其他总是返回相同加密字符串的加密工具不同

我不是一个计算机专家,因此不知道如何将其转换为节点Js,所以我正在寻找一个现有的模块来帮助我完成我的小项目

有人知道好的吗?我测试了一打,但它们总是返回相同的值

var crypto = require('crypto');
var bcrypt = require('bcrypt-nodejs');

var SALT = bcrypt.genSaltSync(10);

function encrypt(text, key){
   var cipher = crypto.createCipher('aes-256-cbc',SALT + key)
   var crypted = cipher.update(text,'utf8','hex')
   crypted += cipher.final('hex');
   return crypted;
}

function decrypt(text, key){
   var decipher = crypto.createDecipher('aes-256-cbc',SALT + key)
   var dec = decipher.update(text,'hex','utf8')
   dec += decipher.final('utf8');
   return dec;
}