This question already has an answer here:
Calculate actual data size from Base64 encoded string length

(1 个回答)


8年前关闭。




我需要创建一个长度为 16 的 byte[]。(在 AES 加密中用作 key 的 128 位字节数组)。

以下是有效字符串
"AAECAwQFBgcICQoLDA0ODw=="

确定字符串是否为 128 位的算法是什么?还是反复试验是创建此类 128 位字符串的唯一方法?

代码
    static void Main(string[] args)
    {
        string firstString = "AAECAwQFBgcICQoLDA0ODw=="; //String Length = 24
        string secondString = "ABCDEFGHIJKLMNOPQRSTUVWX"; //String Length = 24
        int test = secondString.Length;

        byte[] firstByteArray = Convert.FromBase64String((firstString));
        byte[] secondByteArray = Convert.FromBase64String((secondString));

        int firstLength = firstByteArray.Length;
        int secondLength = secondByteArray.Length;


        Console.WriteLine("First Length: " + firstLength.ToString());
        Console.WriteLine("Second Length: " + secondLength.ToString());

        Console.ReadLine();
    }

结果 :

对于 256 位,我们需要 256/6 = 42.66 个字符。这四舍五入为 43 个字符。 [要使其可被 4 整除,请添加 = ]

对于 512 位,我们需要 512/6 = 85.33 个字符。这四舍五入为 86 个字符。 [要使其可被 4 整除,请添加 == ]

对于 128 位,我们需要 128/6 = 21.33 个字符。这四舍五入为 22 个字符。 [要使其可被 4 整除,请添加 == ]

最佳答案

16 字节的 base64 字符串将始终为 24 个字符,并在末尾有 == 作为填充。

(至少当它可以使用 .NET 方法解码时。填充并不总是包含在 base64 字符串的所有用途中,但 .NET 实现需要它。)

关于c# - 如何使用 FromBase64String 创建长度为 16 的字节 [],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14954248/

10-12 17:53
查看更多