Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.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
用javascript替换Java代码以在AES/ECB/Pkcs5中加密_Javascript_Java_Encryption_Cryptography_Aes - Fatal编程技术网

用javascript替换Java代码以在AES/ECB/Pkcs5中加密

用javascript替换Java代码以在AES/ECB/Pkcs5中加密,javascript,java,encryption,cryptography,aes,Javascript,Java,Encryption,Cryptography,Aes,我在node.js中编码,我想使用AES/ECB/Pkcs5用一个特定的密钥加密我的字符串。现在我有下面给出的java代码,但当我试图用javascript编写相同的代码时,事情变得非常混乱,首先我看到了一个使用加密的简单解决方案,下面给出了它的代码,我尝试了它,但我得到的输出与我从java得到的不同,然后我从crypto切换到crypto js,这是另一个用于加密的库现在我尝试了同样的方法,但我再次得到了不同的输出,最后当我看到大量帖子时,其中一篇说声明iv,另一篇说使用密钥和输入字符串作为缓

我在node.js中编码,我想使用AES/ECB/Pkcs5用一个特定的密钥加密我的字符串。现在我有下面给出的java代码,但当我试图用javascript编写相同的代码时,事情变得非常混乱,首先我看到了一个使用加密的简单解决方案,下面给出了它的代码,我尝试了它,但我得到的输出与我从java得到的不同,然后我从crypto切换到crypto js,这是另一个用于加密的库现在我尝试了同样的方法,但我再次得到了不同的输出,最后当我看到大量帖子时,其中一篇说声明iv,另一篇说使用密钥和输入字符串作为缓冲区,另一篇说使用块来加密数据

现在你可以想象,我已经连续两天尝试编写所有这些可能性的代码,但都没有成功,现在谁能告诉我哪种方法是正确的,或者我在哪里遗漏了什么

谢谢

JAVA代码

SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(1, secretKeySpec);
byte[] aBytes = cipher.doFinal(inputString.getBytes());
BASE64Encoder encoder = new BASE64Encoder();
String base64 = encoder.encode(aBytes).toString();
base64 = URLEncoder.encode(base64, "UTF-8");
return base64;
var encrypted = CryptoJS.DES.encrypt(input_string, key, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
});

var base64 = CryptoJS.enc.Base64.toString(encrypted.ciphertext);
//      var base64 = CryptoJS.enc.Base64.stringify(encrypted);
var parsedStr = base64.toString(CryptoJS.enc.Utf8);

console.log('parsedStr: ', parsedStr);
var cipher = crypto.createCipher('aes-128-ecb', key);
var crypted = cipher.update(input_string,'utf8','base64')
crypted += cipher.final('base64');
var key = new Buffer(key, "utf8");
var input_string = new Buffer(input_string, "utf8");
var iv = new Buffer(16); // 16 byte buffer with random data
iv.fill(0); // fill with zeros
var cipher = crypto.createCipher('aes-128-ecb', key, iv);
var crypted = cipher.update(input_string,'utf8','base64')
crypted += cipher.final('base64');
加密JS代码

SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(1, secretKeySpec);
byte[] aBytes = cipher.doFinal(inputString.getBytes());
BASE64Encoder encoder = new BASE64Encoder();
String base64 = encoder.encode(aBytes).toString();
base64 = URLEncoder.encode(base64, "UTF-8");
return base64;
var encrypted = CryptoJS.DES.encrypt(input_string, key, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
});

var base64 = CryptoJS.enc.Base64.toString(encrypted.ciphertext);
//      var base64 = CryptoJS.enc.Base64.stringify(encrypted);
var parsedStr = base64.toString(CryptoJS.enc.Utf8);

console.log('parsedStr: ', parsedStr);
var cipher = crypto.createCipher('aes-128-ecb', key);
var crypted = cipher.update(input_string,'utf8','base64')
crypted += cipher.final('base64');
var key = new Buffer(key, "utf8");
var input_string = new Buffer(input_string, "utf8");
var iv = new Buffer(16); // 16 byte buffer with random data
iv.fill(0); // fill with zeros
var cipher = crypto.createCipher('aes-128-ecb', key, iv);
var crypted = cipher.update(input_string,'utf8','base64')
crypted += cipher.final('base64');
密码

SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(1, secretKeySpec);
byte[] aBytes = cipher.doFinal(inputString.getBytes());
BASE64Encoder encoder = new BASE64Encoder();
String base64 = encoder.encode(aBytes).toString();
base64 = URLEncoder.encode(base64, "UTF-8");
return base64;
var encrypted = CryptoJS.DES.encrypt(input_string, key, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
});

var base64 = CryptoJS.enc.Base64.toString(encrypted.ciphertext);
//      var base64 = CryptoJS.enc.Base64.stringify(encrypted);
var parsedStr = base64.toString(CryptoJS.enc.Utf8);

console.log('parsedStr: ', parsedStr);
var cipher = crypto.createCipher('aes-128-ecb', key);
var crypted = cipher.update(input_string,'utf8','base64')
crypted += cipher.final('base64');
var key = new Buffer(key, "utf8");
var input_string = new Buffer(input_string, "utf8");
var iv = new Buffer(16); // 16 byte buffer with random data
iv.fill(0); // fill with zeros
var cipher = crypto.createCipher('aes-128-ecb', key, iv);
var crypted = cipher.update(input_string,'utf8','base64')
crypted += cipher.final('base64');
区块实施

var crypto = require('crypto'),
        iv = new Buffer(''),
        key = new Buffer('abcgthdbgfhyjhuy', 'hex'),
        cipher = cypto.createCipheriv('aes-128-ecb', key, iv),
        chunks = [];

        chunks.push(cipher.update(
            new Buffer(JSON.stringify({key: "abcgthdbgfhyjhuy"}), 'utf8'),
            'buffer', 'base64'));
        chunks.push(cipher.final('base64'));
        var encryptedString = chunks.join('');
        console.log('encryptedString: ', encryptedString);
我使用输入字符串和键作为缓冲区的一个

var key = new Buffer(key, "utf8");
var input_string = new Buffer(input_string, "utf8");
IV使用情况

SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(1, secretKeySpec);
byte[] aBytes = cipher.doFinal(inputString.getBytes());
BASE64Encoder encoder = new BASE64Encoder();
String base64 = encoder.encode(aBytes).toString();
base64 = URLEncoder.encode(base64, "UTF-8");
return base64;
var encrypted = CryptoJS.DES.encrypt(input_string, key, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
});

var base64 = CryptoJS.enc.Base64.toString(encrypted.ciphertext);
//      var base64 = CryptoJS.enc.Base64.stringify(encrypted);
var parsedStr = base64.toString(CryptoJS.enc.Utf8);

console.log('parsedStr: ', parsedStr);
var cipher = crypto.createCipher('aes-128-ecb', key);
var crypted = cipher.update(input_string,'utf8','base64')
crypted += cipher.final('base64');
var key = new Buffer(key, "utf8");
var input_string = new Buffer(input_string, "utf8");
var iv = new Buffer(16); // 16 byte buffer with random data
iv.fill(0); // fill with zeros
var cipher = crypto.createCipher('aes-128-ecb', key, iv);
var crypted = cipher.update(input_string,'utf8','base64')
crypted += cipher.final('base64');

如果你知道自己在做什么,这肯定会有帮助。AES不是DES,ECB不使用IV,仅举两个非常基本的问题。是的,我知道AES不使用IV,AES不是DES,我尝试了从SO的答案中得到的结果。开发加密!=将代码缝合在一起。即使它能工作,也可能不安全,这是加密的首要目的。关于使用加密进行加密有很多答案,这就是为什么我尝试使用它,你能告诉我如何用javascript进行上述操作。@PrakashKumar。。