0

如何创建密钥和 iv,以便加密字符串应仅包含数字和字符。密钥字符串和 iv 字符串应包含 32 个字符。目的是加密字符串不应包含任何特殊字符。块大小为 256。现在我正在使用像这样的密钥和iv。使用它加密后,得到带有特殊字符的加密字符串。我们怎样才能避免这种情况。

AES_Key=PSVJQRk9QTEpNVU1DWUZCRVFGV1VVT0ZOV1RRU1NaWQ=

Aes_iv=YWlFLVEZZUFNaWlhPQ01ZT0lLWU5HTFJQVFNCRUJZVA=

4

1 回答 1

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) 转换回它的原始输出。

于 2012-04-25T16:44:49.437 回答