.net 将FromBase64转换与CryptoStream一起使用?
我有一个.NET字符串,它是一个加密字节数组的Base64编码表示。它是这样产生的:.net 将FromBase64转换与CryptoStream一起使用?,.net,.net,我有一个.NET字符串,它是一个加密字节数组的Base64编码表示。它是这样产生的: String Encrypt( String message ) { CryptoStream cryptostream = ... StreamWriter stream = new StreamWriter( cryptostream ); ... return Convert.ToBase64String( ... ); } 现在我想要一个解密函数,比如 String D
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 )
);
...
}
字符串解密(字符串密码)
{
TextReader=新的StringReader(cypher);
字节[]缓冲区=新字节[cypher.Length];
for(int i=0;i
有没有一种方法可以直接将FromBase64Transform与CryptoStream一起使用(正如.NET文档所建议的那样),而不是手动将字符串转换为字节,然后手动解码字节,最后解密解码后的字节?从.NET 3.5开始,没有公共内置方法可以从字符串进行流式处理 您可以实现一个简单的StringStream类,该类继承自Stream,这将使您无需将字符串转换为字节数组。我始终支持将字符串转换为字节数组的类 例如:
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
实际上,在本例中,可以使用Convert返回的字节数组直接初始化内存流。这避免了写入和查找的调用。@Jerome,thx,我已经根据您的提示编辑了示例。回过头来看,我甚至不知道为什么我会这么复杂。