Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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加密AES解密_Javascript_Java_Encryption_Base64_Cryptojs - Fatal编程技术网

Javascript加密AES解密

Javascript加密AES解密,javascript,java,encryption,base64,cryptojs,Javascript,Java,Encryption,Base64,Cryptojs,这是服务器端的加密AES加密代码。如何在javascript中解密。我找不到任何同时具有iv和带填充的密钥的解密逻辑 public static String encrypt(String key, String initVector, String value) { try { IvParameterSpec iv = new IvParameterSpec("l353b3l3jk3bk3j3".getBytes("UTF-8"));

这是服务器端的加密AES加密代码。如何在javascript中
解密。我找不到任何同时具有iv和带填充的密钥的解密逻辑

public static String encrypt(String key, String initVector, String value) {
        try {
            IvParameterSpec iv = new IvParameterSpec("l353b3l3jk3bk3j3".getBytes("UTF-8"));
            SecretKeySpec skeySpec = new SecretKeySpec("2353c3l3jk3bk3j8".getBytes("UTF-8"), "AES");

            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
            cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);

            byte[] encrypted = cipher.doFinal(value.getBytes());
            System.out.println("encrypted string: " + Base64.encodeBase64String(encrypted));

            return Base64.encodeBase64String(encrypted);
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        return null;
    }
您可以通过以下方式使用:

var decryptedData = CryptoJS.AES.decrypt(cipherText, CryptoJS.enc.Base64.parse(key), 
{
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7 //default
});
console.log('Decrypted Data: ' + decrypted);

此库不支持PKCS5,但您不应该使用它,因为它是为DES而不是AES设计的。但是,如果您不想更改它,那么您仍然可以使用PKCS7进行解密,因为这两种填充所支持的块大小不同,所以它可以工作。PKCS5仅适用于8字节块,而PKCS7适用于1到255字节之间的块大小。DES使用8字节的块大小。

对于ECB模式,键和IVDOWNSTED的大小如何。AES是128位的块大小,而不是64位。请注意,java填充模式
PKCS5PADDING
实际上是PKCS7填充。请自己尝试解决这个问题,并询问您遇到的特定问题。StackOverflow不是代码编写服务。