我有测试输入字符串(key = value& key = value ...)和键(如此D2335A9CA4924D9F914D2B47B450D436) 我需要使用AES加密来加密我的字符串,但我的结果不等于提供者的结果。结果示例: AD0C66FB3C1204A8B0AC68AA9B9E3029C86DFF5872753F2F8D7B68EA667D8616215C20F831ABD5A4D56F286E471651AE5C15BCEB2F368200B4D9F3F6D2F0791E8F45D45FD .................... 我做错了什么? (googlized代码)
public static string Encrypt(string toEncrypt)
{
byte[] keyArray = ASCIIEncoding.ASCII.GetBytes("D2335A9CA4924D9F914D2B47B450D436");
byte[] toEncryptArray = ASCIIEncoding.ASCII.GetBytes(toEncrypt);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.KeySize = 128;
rDel.BlockSize = 256;
rDel.IV = keyArray;
rDel.Mode = CipherMode.CFB;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return FormatByteArray(resultArray);
}
internal static string FormatByteArray(byte[] b)
{
System.Text.StringBuilder sb1 = new System.Text.StringBuilder();
int i = 0;
for (i = 0; i < b.Length; i++)
{
if (i != 0 && i % 16 == 0)
sb1.Append("\n");
sb1.Append(System.String.Format("{0:X2} ", b[i]));
}
return sb1.ToString();
}
答案 0 :(得分:3)
我做错了什么?
byte[] keyArray = ASCIIEncoding.ASCII.GetBytes("D2335A9CA4924D9F914D2B47B450D436");
这不可能是正确的。它会给你64个字节,其中一半是0x00。
看起来它是十六进制编码的,我想你需要一个小循环来解码它 这将给你16个字节(128位)。
旧答案:
<击> 您需要解码此字符串,它可能是Base64编码。尝试:击>
<击>byte[] keyArray = System.Convert.FromBase64String("D2335A9CA4924D9F914D2B47B450D436")
并检查您是否拥有有效(长度)密钥。
击>