我想在C#中实现Base64网址的安全编码。在Java语言中,我们有一个通用的Codec
库,它为我提供了一个安全的URL编码字符串。如何使用C#实现相同的功能?
byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes("StringToEncode");
string returnValue = System.Convert.ToBase64String(toEncodeAsBytes);
上面的代码将其转换为Base64,但它填充了==
。有没有办法实现URL安全编码?
发布于 2016-09-30 20:29:55
您可以使用名称空间Microsoft.IdentityModel.Tokens
中的类Base64UrlEncoder
。
const string StringToEncode = "He=llo+Wo/rld";
var encodedStr = Base64UrlEncoder.Encode(StringToEncode);
var decodedStr = Base64UrlEncoder.Decode(encodedStr);
if (decodedStr == StringToEncode)
Console.WriteLine("It works!");
else
Console.WriteLine("Dangit!");
发布于 2018-02-19 11:00:11
如果你使用的是ASP.NET核心,另一个选择是使用Microsoft.AspNetCore.WebUtilities.WebEncoders.Base64UrlEncode
。
如果您没有使用ASP.NET核心,可以在Apache 2.0 License下使用the WebEncoders
source。
发布于 2017-07-18 02:28:52
基于这里的答案和一些性能上的改进,我们发布了一个非常容易使用的带有源代码available on GitHub (麻省理工学院许可的)的url-safe base64 implementation to NuGet。
使用起来很简单,就像
var bytes = Encoding.UTF8.GetBytes("Foo");
var encoded = UrlBase64.Encode(bytes);
var decoded = UrlBase64.Decode(encoded);
https://stackoverflow.com/questions/26353710
复制相似问题