使用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;
}
答案 0 :(得分:2)
我会检查keyczar之类的外部库是否支持此功能。
最近,作为Jeff Atwood has taught us in his blog,99%的开发人员不应该关注加密例程的低级细节(因为我们可能会搞砸它们)。
答案 1 :(得分:1)
根据您对此配置文件的使用情况,您可能希望使用外部程序。
例如,如果您希望在配置文件驻留在磁盘上时保护配置文件,但是在程序运行时您可以将其内容保存在内存中,则可以使用gpg加密文件,在程序启动时使用程序所需的用户提供的密码将其解密到内存中,然后在关闭程序时清除内存。[1]
[1]值得注意的是,没有真正的方法来保证由于内存分页等原因,内容不会被写入磁盘。这取决于操作系统以及如果您对它感兴趣可以查找的许多因素。
答案 2 :(得分:0)
Q1:必须是128或者你必须使用BouncyCastle
Q2:是PKCS7
问题3:是CBC
如果你的问题没有死,我可以给你一些例子c#和java