c# - 将c#解密方法转换为android

标签 c# android encryption aes

我试图用 JAVA 解密一个用 C# 加密的字符串。 在 c# 中,使用此方法解密成功:

  AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider();
        aesProvider.BlockSize = 128;
        aesProvider.KeySize = 128;
        aesProvider.Key = strKey;
        aesProvider.IV = strIV;
        aesProvider.Padding = PaddingMode.PKCS7;
        aesProvider.Mode = CipherMode.CBC;

        ICryptoTransform cryptoTransform = aesProvider.CreateDecryptor(aesProvider.Key, aesProvider.IV);
        byte[] DecryptedBytes = cryptoTransform.TransformFinalBlock(EncryptedBytes, 0, EncryptedBytes.Length);
        return System.Text.Encoding.UTF8.GetString(DecryptedBytes);

我想做的是将此方法转换为 JAVA (Android),这是我尝试过的方法,但收到一条错误消息(“Pad block corrupted”):

 try
       {
           byte[] IV = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6 };
           byte[] KEY = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6 };

           SecretKeySpec key = new SecretKeySpec(KEY, "AES/CBC/PKCS7Padding");
           Cipher cipher = Cipher.getInstance ("AES/CBC/PKCS7Padding");

           cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(IV));

           byte[] bytesData = Utilities.Base64Coder.decode(data);

           Log.i("bytesData", String.valueOf(bytesData.length));

           String strResult = new String(cipher.doFinal(bytesData));


            Log.i("decrypted string", strResult);
            return strResult;
        }
        catch (Exception e) {

            Log.i("decrypted FAILED", e.getMessage());
            return null;
        }

10 倍 :)

最佳答案

谁曾搜索过这个问题 - 这段代码工作正常,问题在于 c# 和 Java 之间的 key 不同。

GregS - 10 倍提高我的注意力以再次检查它。

关于c# - 将c#解密方法转换为android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8127053/

相关文章:

android - 构建Android应用时指定包名

使用 C# 和 SQL 进行加密和安全

java - PHP和Java之间的加密

c# - Windows 7 上的 WPF 触摸 : hide touch cursor

android - android/linux如何设置是root用户登录还是普通用户登录?

android - 从 Nexus 设备上挂载的 obb 文件读取损坏的数据

node.js - 使用 vb.net AES/CBC 加密字符串并需要使用 JavaScript CryptoJS 解密

c# - 获取从url发送到wpf的变量?

c# - Linq 到实体投影 : is this projection inefficient?

c# - 如何访问 Task.Factory.StartNew 中的 HttpContext.Current?