首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用FromBase64Transform与CryptoStream?

使用FromBase64Transform与CryptoStream?
EN

Stack Overflow用户
提问于 2008-10-09 13:29:16
回答 2查看 1.5K关注 0票数 0

我有一个.NET字符串,它是加密字节数组的Base64编码表示形式。它是这样制作的:

代码语言:javascript
复制
String Encrypt( String message )
{
    CryptoStream cryptostream = ...
    StreamWriter stream = new StreamWriter( cryptostream );
    ...
    return Convert.ToBase64String( ... );
}

现在我想要一个解密函数

代码语言:javascript
复制
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文档所建议的那样),而不是手动将字符串转换为字节,然后手动解码字节,最后解密已解码的字节?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2008-10-10 14:36:42

我总是使用转换类将字符串转换为Byte数组。

举个例子:

代码语言:javascript
复制
    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
票数 1
EN

Stack Overflow用户

发布于 2008-10-09 14:43:10

在.NET 3.5中,没有公共内置的方式来从字符串中流。

您可以实现一个简单的StringStream类,该类继承自Stream,这将使您不必将字符串转换为字节数组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/187237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档