c# - 使用 Rijndael 在 Java 中加密并在 C# 中解密

标签 c# java encryption rijndaelmanaged aes

使用 Rijndael 算法是否可以加密配置文件(或配置文件中的部分)然后用 Java 解密该文件?可以做出如下假设:

  1. 传入IV(不是Autogenerated idea::GenerateIV(); )
  2. 传入 key
  3. BlockSize 为 128(标准)

假设这可以做到,我的下一个问题是:

  1. keySize 可以是 256 吗?我知道 128 是 AES,但我们想使用 256。我也不知道 Java 是否有 256 的提供程序,或者我是否需要使用 BouncyCaSTLe
  2. 什么是填充? PKCS7?
  3. 我假设 CiperMode 是 CBC

在 C# 中有这样的东西吗?但是,不知道它是否可以用 Java 解密……也许我的 C# 也是错误的?

public static void initCrypt()
    {
        byte[] keyBytes = System.Text.UTF8Encoding.UTF8.GetBytes("abcdefghijklmnop");

        rijndaelCipher = new RijndaelManaged();
        PasswordDeriveBytes pdb = new PasswordDeriveBytes(keyBytes, new SHA1CryptoServiceProvider().ComputeHash(keyBytes));
        byte[] key = pdb.GetBytes(32);
        byte[] iv = pdb.GetBytes(16);
        rijndaelCipher.Mode = CipherMode.CBC;
        rijndaelCipher.Padding = PaddingMode.PKCS7; //PaddingMode.PKCS7 or None or Zeros
        rijndaelCipher.KeySize = 256; //192, 256
        rijndaelCipher.BlockSize = 128;
        rijndaelCipher.Key = keyBytes;
        rijndaelCipher.IV = iv;
    }

最佳答案

我会检查是否有外部库,例如 keyczar支持这一点。

作为杰夫·阿特伍德 has taught us in his blog最近,99% 的开发人员不应该关心加密例程的底层细节(因为我们可能会把它们搞砸)。

关于c# - 使用 Rijndael 在 Java 中加密并在 C# 中解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1003365/

相关文章:

c# - 如何从 C# 应用程序控制面板的 "Manage another account"部分启动 "User Accounts"页面

Java else 语句错误

java - 如何使用 Java HTMLParser (org.htmlparser) 替换链接的 URL

java - 太阳.security.pkcs11.wrapper.PKCS11Exception : CKR_WRAPPED_KEY_INVALID

使用 SSL 密码连接 nginx websocket

php - 如果没有 ssl,如何保护注册过程

c# - VSTO加载项CustomTaskPane升级到Word 2016/2019后将自行打开

c# - 在其中心旋转图形位图

c# - C# 中 mysql_fetch_assoc 的等效命令是什么?

java - 尝试使巨大的图像(与场景 View 相比)移动