我如何ASCII armor内存流? ASCII装甲是将二进制数据编码为可打印的ASCII字符串的过程。这用于例如加密。
在C#中是否有任何标准方法可以实现此解码支持?像API一样?否则,怎么办呢?
答案 0 :(得分:7)
您应该几乎总是使用Base64(或十六进制)来表示可打印文本中的任意二进制数据:
byte[] binary = ...;
string text = Convert.ToBase64String(binary);
...
string text = ...;
byte[] binary = Convert.FromBaseString(text);
您可以使用MemoryStream.ToArray()
将MemoryStream
中的所有数据转换为字节数组。以流式方式执行此操作需要稍微多一些工作,但是可行 - 并且在框架中使用ToBase64Transform
和FromBase64Transform
类支持它,您可以使用它来链接流CryptoStream
。结果将是ASCII编码的base64流。
答案 1 :(得分:2)
您可以使用base64编码来获得二进制数据的相当紧凑的ASCII表示:
string data = Convert.ToBase64String(theMemoryStream.ToArray());
使用Convert.FromBase64String
方法解码字符串。
答案 2 :(得分:2)
使用Convert.FromBase64String和Convert.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);
}