我有一个.NET字符串,它是加密字节数组的Base64编码表示形式。它是这样制作的:
String Encrypt( String message )
{
CryptoStream cryptostream = ...
StreamWriter stream = new StreamWriter( cryptostream );
...
return Convert.ToBase64String( ... );
}现在我想要一个解密函数
String Decrypt( String cypher )
{
TextReader reader = new StringReader( cypher );
byte[] buffer = new byte[ cypher.Length ];
for( int i = 0; i < cypher.Length; ++i )
{
buffer[ i ] = (byte) reader.Read();
}
FromBase64Transform transformer = new FromBase64Transform();
MemoryStream raw = new MemoryStream
(
transformer.TransformFinalBlock( buffer, 0, buffer.Length )
);
...
}是否有一种方法可以直接与FromBase64Transform一起使用CryptoStream (如.NET文档所建议的那样),而不是手动将字符串转换为字节,然后手动解码字节,最后解密已解码的字节?
发布于 2008-10-10 14:36:42
我总是使用转换类将字符串转换为Byte数组。
举个例子:
public static string DeCryptString(string s) {
byte[] b = System.Convert.FromBase64String(s);
using (MemoryStream ms = new MemoryStream(b))
using (CryptoStream cs = /* Create decrypting stream here */)
using (StreamReader sr = new StreamReader(cs)) {
string buf = sr.ReadToEnd();
return buf;
}
} // DeCryptString发布于 2008-10-09 14:43:10
在.NET 3.5中,没有公共内置的方式来从字符串中流。
您可以实现一个简单的StringStream类,该类继承自Stream,这将使您不必将字符串转换为字节数组。
https://stackoverflow.com/questions/187237
复制相似问题