相关疑难解决方法(0)

如果输入长度不能被3整除,为什么base64编码需要填充?

在base64编码中填充的目的是什么.以下是维基百科的摘录:

"分配了一个额外的填充字符,可用于强制编码输出为4个字符的整数倍(或等效于未编码的二进制文本不是3个字节的倍数);这些填充字符必须在解码时丢弃,但仍然允许计算未编码文本的有效长度,当其输入二进制长度不是3个字节的倍数时(最后一个非填充字符通常被编码,使得它代表的最后一个6位块将为零在其最低有效位上填充,在编码流的末尾最多可能出现两个填充字符."

我写了一个程序,它可以base64编码任何字符串并解码任何base64编码的字符串.填充解决了什么问题?

base64 encoding

76
推荐指数
4
解决办法
6万
查看次数

HttpServerUtility.UrlTokenEncode替换netstandard

我移植一个项目的目标net472netstandard.System.Web我坚持的最后一个依赖是HttpServerUtility.UrlTokenEncode(Byte[]).

我发现Microsoft.AspNetCore.WebUtilities,包含Base64UrlTextEncoderWebEncoders,但是它们与UrlTokenEncode/ 不可互换Decode,因为它追加/期望最后的=填充字符数,例如:

var data = Encoding.UTF8.GetBytes("SO");
Convert.ToBase64String(data);              // U08=
HttpServerUtility.UrlTokenEncode(data);    // U081 - this is what's expected and 
                                           // the only thing UrlTokenDecode can handle
Base64UrlTextEncoder.Encode(data);         // U08
WebEncoders.Base64UrlEncode(data);         // U08
Run Code Online (Sandbox Code Playgroud)

据我所知,没有其他差异(我用随机字符串运行测试),但它也引入了一些其他依赖项(Microsoft.Net.Http.Headers和Microsoft.Extensions.Primitives),我不知道真的需要在那个项目中.

是否有任何nuget包装与直接替换?我想自己实现这个,如果没有.

.net base64 urlencode .net-standard

9
推荐指数
2
解决办法
1785
查看次数

bigquery中的md5

在BigQuery中,我将md5函数用作:

select md5('<<some string>>') as hashed
Run Code Online (Sandbox Code Playgroud)

总是在字母的最后返回“ ==”,例如:

R7zlx09Yn0hn29V+nKn4CA==    
Run Code Online (Sandbox Code Playgroud)

为什么总是带有“ ==”?

sql md5 google-bigquery

6
推荐指数
1
解决办法
423
查看次数

标签 统计

base64 ×2

.net ×1

.net-standard ×1

encoding ×1

google-bigquery ×1

md5 ×1

sql ×1

urlencode ×1