如果我想生成一个Base64编码的输出,我该如何在.NET中实现?
我知道自从.NET 2.0以来,有ICryptoTransform接口,以及该接口的ToBase64Transform()和FromBase64Transform()实现。
但是这些类嵌入到System.Security命名空间中,并且需要使用TransformBlock、TransformFinalBlock等。
有没有更简单的方法在.NET中对数据流进行base64编码?
如果我想生成一个Base64编码的输出,我该如何在.NET中实现?
我知道自从.NET 2.0以来,有ICryptoTransform接口,以及该接口的ToBase64Transform()和FromBase64Transform()实现。
但是这些类嵌入到System.Security命名空间中,并且需要使用TransformBlock、TransformFinalBlock等。
有没有更简单的方法在.NET中对数据流进行base64编码?
7条答案
按热度按时间p1iqtdky1#
如果你想要一个转换为Base64的流,你可以把一个
ToBase64Transform
转换为一个CryptoStream
:字符串
如果你只想将一个字节数组转换为Base64,你可以简单地调用
Convert.ToBase64String(bytes)
。在这两种情况下,您都可以将单词
To
替换为From
。kkih6yb82#
通过**@Slaks**的简单回答,我写了一个简单的解决方案:
字符串
我只使用CryptoStream来编码,因为我发现它在解码带有换行符的Base64哈希时有问题,而FromBase 64 Transform可以在没有CryptoStream的情况下轻松完成。我希望剩下的足够清楚,我不必解释任何东西。
示例:
型
cld4siwp3#
这应该是你正在寻找的:
http://mews.codeplex.com/SourceControl/changeset/view/52969#392973
unhi4e5o4#
Convert提供了这一点,下面是一个代码示例,
字符串
rvpgvaaj5#
基于@sombra的回答,我需要一些类似的东西,但在处理需要以流格式发送到其S3存储的大文件时,我的Web API更容易使用。
字符串
r8xiu3jd6#
看起来好像有一个
Base64Stream
类。也许它会帮助未来的读者。http://referencesource.microsoft.com/#system/net/System/Net/mail/Base64Stream.cs
vnzz0bqm7#
CryptoStream不做RFC2045行结束。因此,这对我不起作用。
ToBase64String是不可接受的,因为它不是一种流方法。我不想一次在内存中保存所有数据。
所以我需要别的选择。
Richard Grimes在这里发布了一个:
http://www.grimes.nildram.co.uk/workshops/encodedStream.htm
由于许可和功能需求,我没有使用它,而是编写了一个独立的实现,可以在这里找到:
http://cheeso.members.winisp.net/srcview.aspx?dir=streams&file=Base64Stream.cs的
它的许可证是the MS-PL。
要使用它来压缩然后对文件进行base64编码,请执行以下操作:
字符串