C#中的Java AES / CBC / PKCS5Padding

布赖恩·赖斯

我得到了需要转换为C#的Java加密代码。我想我很接近...但是我不确定如何重复IV计算...有什么帮助吗?

Java代码:

    public static string getAESencodingResult(String sSrc, String encrypt_key)
    {
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        byte[] raw = encrypt_key.getBytes();
        SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
        IvParameterSpec iv = new IvParameterSpec(encrypt_key.getBytes());
        cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
        byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8"));
        return new BASE64Encoder().encode(encrypted);
    }

C#代码:

    static string EncryptStringToBytes(string plainText, byte[] key)
    {
        byte[] encrypted;
        using (RijndaelManaged rijAlg = new RijndaelManaged())
        {
            rijAlg.Key = key;
            // rijAlg.IV = ???
            rijAlg.GenerateIV();
            rijAlg.Padding = PaddingMode.PKCS7;
            rijAlg.Mode = CipherMode.CBC;
            ICryptoTransform encryptor = rijAlg.CreateEncryptor(rijAlg.Key, rijAlg.IV);
            using (MemoryStream msEncrypt = new MemoryStream())
            using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
            using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
            {

                swEncrypt.Write(plainText);
                if (plainText.Length < 16)
                {
                    for (int i = plainText.Length; i < 16; i++)
                        swEncrypt.Write((byte)0x0);
                }
                swEncrypt.Flush();
                csEncrypt.FlushFinalBlock();
                encrypted = msEncrypt.ToArray();
            }
        }
        return Convert.ToBase64String(encrypted);
    }
约翰

如果我不误解Java代码,则只需将键值也分配给IV:

rijAlg.Key = key;
rijAlg.IV = key;

并删除GenerateIV行:

rijAlg.GenerateIV();

我知道您不受Java代码的控制,因此无法解决此问题,但对将来的读者来说:每次加密内容时都不应使用相同的IV。有关更多信息,请参见此问题

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AES / CBC / PKCS5Padding与AES / CBC / PKCS7Padding具有256键大小的性能Java

来自分类Dev

用Java加密/解密“ AES / ECB / PKCS5Padding”

来自分类Dev

Android / Java AES 256 CBC与PHP中的PKCS5Padding解密

来自分类Dev

将文本加密为AES / CBC / PKCS7Padding

来自分类Dev

从Java到PHP的带有SecretKey的AES CBC PKCS5Padding

来自分类Dev

所有类型的Android设备均可使用AES / CBC / PKCS5Padding加密解密算法和SHA-1哈希算法吗

来自分类Dev

AES / cbc / pkcs5padding加密IOS

来自分类Dev

使用CryptoJS解密AES / CBC / PKCS5Padding

来自分类Dev

使用PKCS7Padding进行AES CBC加密在Java和Objective-C中具有不同的结果

来自分类Dev

Java AES / CBC / PKCS5填充流加密性能与未加密相比

来自分类Dev

Java Encrypt a file using aes256/ CBC/PKCS7Padding

来自分类Dev

Java使用aes256 / CBC / PKCS7Padding加密文件

来自分类Dev

无法复制从Java到PHP中使用AES / ECB / PKCS5Padding加密方法

来自分类Dev

如何在dart中使用AES CBC 256位和PKCS5Padding进行加密和解密以及如何检索参数

来自分类Dev

从ColdFusion加密解密NodeJS中的AES / CBC / PKCS5Padding

来自分类Dev

在Dart中解密AES / CBC / PKCS5Padding加密

来自分类Dev

为什么我收到javax.crypto.BadPaddingException(AES / CBC / PKCS5Padding)

来自分类Dev

C#和Java之间的AES / CBC / NoPadding

来自分类Dev

PHP中的AES / CBC / PKCS#5加密算法

来自分类Dev

用Java加密/解密“ AES / ECB / PKCS5Padding”

来自分类Dev

Android / Java AES 256 CBC与PHP中的PKCS5Padding解密

来自分类Dev

如何使用Objective-c实现AES PKCS5Padding

来自分类Dev

Ruby中的Coldfusion“ AES / CBC / PKCS5Padding”解密

来自分类Dev

使用PKCS7Padding进行AES CBC加密在Java和Objective-C中具有不同的结果

来自分类Dev

Java AES / CBC / PKCS5填充流加密性能与未加密相比

来自分类Dev

无法在C#bouncycastle和PHP openssl之间交换AES-256-CBC / PKCS7

来自分类Dev

使用 AES/CBC/PKCS7Padding 加密/解密

来自分类Dev

矢量不随 Java 中的“AES/CBC/pkcs7padding”而改变

来自分类Dev

使用 AES/ECB/NoPadding 与 PKCS5Padding 进行加密

Related 相关文章

  1. 1

    AES / CBC / PKCS5Padding与AES / CBC / PKCS7Padding具有256键大小的性能Java

  2. 2

    用Java加密/解密“ AES / ECB / PKCS5Padding”

  3. 3

    Android / Java AES 256 CBC与PHP中的PKCS5Padding解密

  4. 4

    将文本加密为AES / CBC / PKCS7Padding

  5. 5

    从Java到PHP的带有SecretKey的AES CBC PKCS5Padding

  6. 6

    所有类型的Android设备均可使用AES / CBC / PKCS5Padding加密解密算法和SHA-1哈希算法吗

  7. 7

    AES / cbc / pkcs5padding加密IOS

  8. 8

    使用CryptoJS解密AES / CBC / PKCS5Padding

  9. 9

    使用PKCS7Padding进行AES CBC加密在Java和Objective-C中具有不同的结果

  10. 10

    Java AES / CBC / PKCS5填充流加密性能与未加密相比

  11. 11

    Java Encrypt a file using aes256/ CBC/PKCS7Padding

  12. 12

    Java使用aes256 / CBC / PKCS7Padding加密文件

  13. 13

    无法复制从Java到PHP中使用AES / ECB / PKCS5Padding加密方法

  14. 14

    如何在dart中使用AES CBC 256位和PKCS5Padding进行加密和解密以及如何检索参数

  15. 15

    从ColdFusion加密解密NodeJS中的AES / CBC / PKCS5Padding

  16. 16

    在Dart中解密AES / CBC / PKCS5Padding加密

  17. 17

    为什么我收到javax.crypto.BadPaddingException(AES / CBC / PKCS5Padding)

  18. 18

    C#和Java之间的AES / CBC / NoPadding

  19. 19

    PHP中的AES / CBC / PKCS#5加密算法

  20. 20

    用Java加密/解密“ AES / ECB / PKCS5Padding”

  21. 21

    Android / Java AES 256 CBC与PHP中的PKCS5Padding解密

  22. 22

    如何使用Objective-c实现AES PKCS5Padding

  23. 23

    Ruby中的Coldfusion“ AES / CBC / PKCS5Padding”解密

  24. 24

    使用PKCS7Padding进行AES CBC加密在Java和Objective-C中具有不同的结果

  25. 25

    Java AES / CBC / PKCS5填充流加密性能与未加密相比

  26. 26

    无法在C#bouncycastle和PHP openssl之间交换AES-256-CBC / PKCS7

  27. 27

    使用 AES/CBC/PKCS7Padding 加密/解密

  28. 28

    矢量不随 Java 中的“AES/CBC/pkcs7padding”而改变

  29. 29

    使用 AES/ECB/NoPadding 与 PKCS5Padding 进行加密

热门标签

归档