gpt4 book ai didi

c# - Convert.ToBase64String 是否返回与其源字节数组相同的长度?

转载 作者:太空狗 更新时间:2023-10-29 19:54:35 26 4
gpt4 key购买 nike

我不知道我是不是在问一个愚蠢的问题,但我想知道 .NET 中的 Convert.ToBase64String 函数返回的长度与其源字节大小相同还是不同?我想尝试 MSDN 本身的文章 How To: Use Forms Authentication with SQL Server 2000散列我的密码,但我发现他们用来创建盐字符串的函数返回的长度比它应该返回的长度多 3 个。此处澄清的是那篇文章中的代码。

private static string CreateSalt(int size)
{
// Generate a cryptographic random number using the cryptographic
// service provider
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
byte[] buff = new byte[size];
rng.GetBytes(buff);
// Return a Base64 string representation of the random number
return Convert.ToBase64String(buff);
}

最佳答案

不,Base64 为 3 字节输入返回 4 字节输出,四舍五入(用 = 填充)到下一个 4 字节边界。

int outputLength = ((inputLength+2)/3)*4

那是因为它每个字节仅使用 6 位(基本上是数字 0-63),以便仅使用不属于控制字符且在 7 位范围内的 ASCII 字符。因此,当使用 Base64 编码数据时,您将得到 3*8 => 4*6 位。

关于c# - Convert.ToBase64String 是否返回与其源字节数组相同的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/855302/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com