文档说“如果您使用以下值,那么您将获得此结果”。
块大小: 128 密码模式: CBC 填充模式:零
密钥: BTikvHBatPdAtgT3317QIQqGFY25WpIz
四: a5Sg4U9m11Mw2tIZ
要加密的值: 2008-06-02 13:28:45,Statements,1234567,,06/01/2008,06/01/2008,0
这是根据开发人员指南使用所有这些值后加密结果的样子。
b97f3985245be1065604c5808cebaa2e15813bf938cfaa3c198fd464565c13ced7c91ac6 b68326ce5ed5e81cb7de81acb9fcd1b1636127efbac3203da5bdccea
但是,由于某种原因,我无法得到这个结果,这是我用来填充这个结果的代码,但它一开始给了我相同的字符,后来在字符更改时给了我相同的字符,正如您在这个问题最底部的结果中看到的那样。
这是代码,下面是新输出:
public static void Main(string[] args)
{
RijndaelManaged rij = new RijndaelManaged();
rij.Mode = CipherMode.CBC;
rij.Padding = PaddingMode.Zeros;
rij.Key = ASCIIEncoding.UTF8.GetBytes("BTikvHBatPdAtgT3317QIQqGFY25WpIz");
rij.IV = ASCIIEncoding.UTF8.GetBytes("a5Sg4U9m11Mw2tIZ");
ICryptoTransform transform = rij.CreateEncryptor();
byte[] data = Encoding.ASCII.GetBytes("2008-06-02 13:28:45,Statements,1234567,,06/01/2008,06/01/2008,0");
byte[] result = transform.TransformFinalBlock(data, 0, data.Length);
Console.WriteLine(ByteArrayToString(result));
}
public static string ByteArrayToString(byte[] ba)
{
StringBuilder hex = new StringBuilder(ba.Length * 2);
foreach (byte b in ba)
hex.AppendFormat("{0:x2}", b);
return hex.ToString();
}
我的输出:
b97f3985245be1065604c5808cebaa2e15813bf938cfaa3c198fd464565c13ced7c91ac6b68326ce5ed5e81cb7de81ac
注意:随着我的进步,我需要更新问题并找到更好的解决方案,但现在出现了新问题。