我如何“ASCII装甲”我的MemoryStream?

时间:2012-01-02 12:53:12

标签: c# .net string encoding ascii

我如何ASCII armor内存流? ASCII装甲是将二进制数据编码为可打印的ASCII字符串的过程。这用于例如加密。

在C#中是否有任何标准方法可以实现此解码支持?像API一样?否则,怎么办呢?

3 个答案:

答案 0 :(得分:7)

您应该几乎总是使用Base64(或十六进制)来表示可打印文本中的任意二进制数据:

byte[] binary = ...;
string text = Convert.ToBase64String(binary);

...

string text = ...;
byte[] binary = Convert.FromBaseString(text);

您可以使用MemoryStream.ToArray()MemoryStream中的所有数据转换为字节数组。以流式方式执行此操作需要稍微多一些工作,但是可行 - 并且在框架中使用ToBase64TransformFromBase64Transform类支持它,您可以使用它来链接流CryptoStream。结果将是ASCII编码的base64流。

答案 1 :(得分:2)

您可以使用base64编码来获得二进制数据的相当紧凑的ASCII表示:

string data = Convert.ToBase64String(theMemoryStream.ToArray());

使用Convert.FromBase64String方法解码字符串。

答案 2 :(得分:2)

使用Convert.FromBase64StringConvert.ToBase64String方法检查我的密码操作

  

查看可能清除图片的文档示例   你..你可以传递字节数组作为参数,然后检查什么   你会得到.. ASCII armor上指定的链接有最常用的二进制到文本编码形式的列表,其中base64可用。你可以使用.net库来处理这个问题。

//编码

public static string EncodeString(string s)
        {
            byte[] b = System.Text.Encoding.Default.GetBytes(s);
            return Convert.ToBase64String(b, 0, b.Length);
        }

//解码

public static string DecodeString(string s)
{
    byte[] b = Convert.FromBase64String(s);
    return System.Text.Encoding.Default.GetString(b);
}