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

时间:2016-07-01 01:10:55

标签: javascript java encryption cryptography aes

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

现在你可以想象我已经连续两天尝试编码所有这些可能性,但没有一个可以解决,现在任何人都可以请教我,告诉我哪种方法是正确的,或者我错过了什么。

由于

JAVA CODE

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;

CRYPTO-JS CODE

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 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);

我在哪里使用input_string AND key AS BUFFER

var key = new Buffer(key, "utf8");
var input_string = new Buffer(input_string, "utf8");

IV USAGE

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');

0 个答案:

没有答案