Encrypt in java and Decrypt in C# For AES 256 bit

前端 未结 4 1084
无人及你
无人及你 2020-12-03 01:44

1.I have java function which encrypt xml file and return encrypted String.

/// Java Class 
import java.security.Key;
import javax.crypto.Cipher;
import javax         


        
4条回答
  •  甜味超标
    2020-12-03 02:17

    I had a problem with this algorithm (in Java only) and I did a litle changes.

    Diff Image

    // Java code - Cipher mode CBC version.
    // CBC version need Initialization vector IV.
    // Reference from https://stackoverflow.com/questions/6669181/why-does-my-aes-encryption-throws-an-invalidkeyexception/6669812#6669812
    public static String key = "FFClY170hLrhsDnKUEhJ4FhVOnrpNNFFClY170hLrhsDnKUE";
    public static byte[] key_Array = Base64.decodeBase64(key);
    
    public static String encrypt(String strToEncrypt) {
        try {
            //Cipher _Cipher = Cipher.getInstance("AES");
            //Cipher _Cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING");
            Cipher _Cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
    
            // Initialization vector.   
            // It could be any value or generated using a random number generator.
            byte[] iv = {1, 2, 3, 4, 5, 6, 6, 5, 4, 3, 2, 1, 7, 7, 7, 7};
            IvParameterSpec ivspec = new IvParameterSpec(iv);
    
            key_Array = Arrays.copyOf(key_Array, 32);
    
            Key SecretKey = new SecretKeySpec(key_Array, "AES");
            _Cipher.init(Cipher.ENCRYPT_MODE, SecretKey, ivspec);
    
            return Base64.encodeBase64String(_Cipher.doFinal(strToEncrypt.getBytes()));
        } catch (Exception e) {
            System.out.println("[Exception]:" + e.getMessage());
        }
        return null;
    }
    
    public static String decrypt(String EncryptedMessage) {
        try {
            //Cipher _Cipher = Cipher.getInstance("AES");
            //Cipher _Cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING");
            Cipher _Cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
    
            // Initialization vector.   
            // It could be any value or generated using a random number generator.
            byte[] iv = {1, 2, 3, 4, 5, 6, 6, 5, 4, 3, 2, 1, 7, 7, 7, 7};
            IvParameterSpec ivspec = new IvParameterSpec(iv);
    
            key_Array = Arrays.copyOf(key_Array, 32);
    
            Key SecretKey = new SecretKeySpec(key_Array, "AES");
            _Cipher.init(Cipher.DECRYPT_MODE, SecretKey, ivspec);
    
            byte DecodedMessage[] = Base64.decodeBase64(EncryptedMessage);
            return new String(_Cipher.doFinal(DecodedMessage));
    
        } catch (Exception e) {
            System.out.println("[Exception]:" + e.getMessage());
    
        }
        return null;
    }
    

提交回复
热议问题