Rijndael算法的所有样本都是从Rijndael类本身定义的密钥,我们不能提供我们自己的密钥。任何暗示都会对我有所帮助。
我们创建的示例应用程序适用于Windows Mobile,它不支持PasswordDeriveBytes
提前致谢 格塔
有关此主题的更新: 根据下面提供的代码示例,我们已经尝试过,它似乎正在工作,但这有一个小小的打嗝。当我们解密数据时,在示例的值的右侧有一个8位填充,我们正在加密用于事务的唯一键,它看起来像这样:
加密前: MI03112009044625000000000000008024754008
解密后: MI03112009044625000000000000008024754008揞⑁㋬㓠⥳空⠜资
任何人都可以帮助这个正确的填充发生在原始值。
感谢 格塔
答案 0 :(得分:6)
您可以根据我建议您阅读的RijndaelManaged Class MSDN article尝试这样的事情。
var plainText = "This will be encrypted.";
var aesAlg = new RijndaelManaged();
aesAlg.Key = new byte[32] { 118, 123, 23, 17, 161, 152, 35, 68, 126, 213, 16, 115, 68, 217, 58, 108, 56, 218, 5, 78, 28, 128, 113, 208, 61, 56, 10, 87, 187, 162, 233, 38 };
aesAlg.IV = new byte[16] { 33, 241, 14, 16, 103, 18, 14, 248, 4, 54, 18, 5, 60, 76, 16, 191};
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
msEncrypt = new MemoryStream();
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) {
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt)) {
swEncrypt.Write(plainText);
}
}
return msEncrypt.ToArray();
答案 1 :(得分:2)
Rijndael实例的key属性以byte []为键。 确保将其设置为具有有效算法大小的数组。
链接到msdn:http://msdn.microsoft.com/en-us/library/system.security.cryptography.symmetricalgorithm.key.aspx
答案 2 :(得分:2)
你是什么意思不能提供我们自己的钥匙? Here's an example关于你如何做到这一点。
public static string Encrypt(string Text, byte[] key, byte[] VectorBytes){
try{
byte[] TextBytes = Encoding.UTF8.GetBytes(Text);
RijndaelManaged rijKey = new RijndaelManaged();
rijKey.Mode = CipherMode.CBC;
ICryptoTransform encryptor = rijKey.CreateEncryptor(key,VectorBytes);
MemoryStream memoryStream = new MemoryStream();
cryptoStream.Write(TextBytes, 0, TextBytes.Length);
cryptoStream.FlushFinalBlock();
byte[] cipherTextBytes = memoryStream.ToArray();
memoryStream.Close();
cryptoStream.Close();
string cipherText = Convert.ToBase64String(cipherTextBytes);
return cipherText;
}
catch (Exception e){
MessageBox.Show("Falsches Passwort "+ e.Message.ToString());
string t = "";
return t;
}
}