[英]Encrypt in Java and Decrypt in C# with Rijndael
使用 Rijndael 算法是否可以加密配置文件(或配置文件中的部分)然后在 Java 中解密该文件? 可以做出如下假设:
假设可以做到这一点,我的下一个问题是:
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;
}
根据您对此配置文件的使用情况,您可能需要使用外部程序。
例如,如果你想保护驻留在磁盘上的配置文件,但你可以在程序运行时将其内容保存在 memory 中,你可以使用gpg加密文件,使用程序启动时需要用户提供的密码,然后在关闭程序时清除 memory。 [1]
[1] 值得注意的是,没有真正的方法可以保证内容不会因为 memory 分页等原因写入磁盘。 这取决于操作系统和许多因素,如果您对它感兴趣,可以查找这些因素。
Q1:必须是128,不然就得用BouncyCastle
Q2:是的 PKCS7
Q3:是的 CBC
如果你的问题没有死,我可以给你工作示例 c# 和 java
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.