Rijndael算法(如何创建我们自己的密钥)

Rijndael算法的所有样本都是从Rijndael类本身定义的密钥,我们不能提供自己的密钥。 对此的任何暗示都会对我有所帮助。

我们创建的示例应用程序是针对Windows Mobile的,它不支持PasswordDeriveBytes

在此先感谢Geetha

关于这个主题的更新:根据下面提供的代码示例,我们已经尝试过它,它似乎正在工作,但这有一个小小的打嗝。 当我们解密数据时,在示例的值的右侧有一个8位填充,我们正在加密用于事务的唯一键,它看起来像这样:

加密前:MI03112009044625000000000000008024754008

解密后:MI03112009044625000000000000008024754008揞⑁㋬㓠⥳空⠜资

任何人都可以帮助这个正确的填充发生在原始值。

谢谢杰塔

您可以尝试这样的,基于RijndaelManaged Class MSDN文章 ,我也建议您阅读。

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(); 

你是什​​么意思不能提供我们自己的关键? 这是一个关于你如何做的例子 。

 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; } } 

Rijndael实例的关键属性以byte []为关键字。 确保将其设置为具有有效算法大小的数组。

链接到msdn: http : //msdn.microsoft.com/en-us/library/system.security.cryptography.symmetricalgorithm.key.aspx