2009-11-03 57 views
4

Rijndael算法的所有樣本都定義了Rijndael類本身的密鑰,我們不能提供我們自己的密鑰。任何提示都會對我有所幫助。Rijndael算法(如何創建我們自己的密鑰)

我們正在創建示例應用程序是爲Windows Mobile,它不支持PasswordDeriveBytes

在此先感謝 格塔

更新關於這一主題: 按下面提供的代碼示例中,我們已經嘗試了它,它似乎正在工作,但這裏有一個小小的呃逆。當我們對數據進行解密有對示例中的值的右側的8位填充起來,我們要加密事務的唯一密鑰,它看起來像這樣:

加密前: MI03112009044625000000000000008024754008

解密後: MI03112009044625000000000000008024754008揞⑁㋬㓠⥳空⠜資

任何人都可以幫助在這個正確的填充發生在原來的價值。

感謝 格塔

+0

正如以下答案所述,您*可以*以字節形式提供密鑰。 – Graviton 2009-11-03 11:38:07

+0

解密後的字符串還是字節[]?您是否使用MSDN文章中的decryptStringFromBytes_AES? – 2009-11-04 06:17:22

回答

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(); 
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; 
    } 
} 
+0

爲什麼downvote? – Graviton 2009-11-03 11:37:32

+2

鏈接被破壞.. :( – ppumkin 2014-05-21 19:08:08

相關問題