如何创建密钥和iv,以便加密字符串只包含数字和字符.key字符串和iv字符串应包含32个字符。目的是加密字符串不应包含任何特殊字符。块大小为256。 现在我正在使用密钥和iv这样。使用此加密后,获取带有特殊字符的加密字符串。我们可以避免这种情况。
AES_KEY = PSVJQRk9QTEpNVU1DWUZCRVFGV1VVT0ZOV1RRU1NaWQ =
Aes_iv = YWlFLVEZZUFNaWlhPQ01ZT0lLWU5HTFJQVFNCRUJZVA =
答案 0 :(得分:2)
您需要对输出进行Base64编码。这将确保它只能打印ASCII,并且是存储/传输加密数据的标准配置。
您希望您的密钥和IV完全随机。仅仅因为你的钥匙上没有特殊字符,并不代表你在输出中没有获得特殊字符。绝对没有相关性。它看起来像你的钥匙,IV在那里是base64编码。确保使用原始密钥和IV。
这里是如何在C#中完成的。假设您的AES输出是字节数组:
string encoded = System.Convert.ToBase64String(aesOutput);
如果它是一个字符串:
byte[] encodedBytes = System.Text.Encoding.ASCII.GetBytes(aesOutput);
string base64encoded = System.Convert.ToBase64String(encodedBytes);
您可以使用System.Convert.FromBase64String(encodedData)将其转换回原始输出。