我需要创建一个byte[]
长度为 16 的字节数组。(在 AES 加密中用作密钥的 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 整除==
]