首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CA2202代码分析与处置问题

CA2202代码分析与处置问题
EN

Stack Overflow用户
提问于 2016-11-21 16:24:18
回答 1查看 80关注 0票数 0

我无法理解这些代码分析警告的分辨率。

这是代码:

代码语言:javascript
复制
   public static string Crypt(string s_Data, string s_Password, bool b_Encrypt)
    {
        byte[] u8_Salt = new byte[] { ... };

        PasswordDeriveBytes i_Pass = new PasswordDeriveBytes(s_Password, u8_Salt);

        Rijndael i_Alg = Rijndael.Create();
        i_Alg.Key = i_Pass.GetBytes(32);
        i_Alg.IV = i_Pass.GetBytes(16);

        ICryptoTransform i_Trans = (b_Encrypt) ? i_Alg.CreateEncryptor() : i_Alg.CreateDecryptor();

        MemoryStream i_Mem = new MemoryStream();
        CryptoStream i_Crypt = new CryptoStream(i_Mem, i_Trans, CryptoStreamMode.Write);

        byte[] u8_Data;
        if (b_Encrypt)
            u8_Data = Encoding.Unicode.GetBytes(s_Data);
        else
            u8_Data = Convert.FromBase64String(s_Data);

        try
        {
            i_Crypt.Write(u8_Data, 0, u8_Data.Length);
            i_Crypt.Close();
            if (b_Encrypt)
                return Convert.ToBase64String(i_Mem.ToArray());
            else
                return Encoding.Unicode.GetString(i_Mem.ToArray());
        }
        catch
        {
            return null;
        }
        finally
        {
            i_Crypt.Close();
        }
    }

i_Crypt.Close();调用时会引发错误。我能看出我的代码中有两次那个电话。

错误:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-21 16:26:53

只需从try块中移除Close();即可。

代码语言:javascript
复制
try
{
    i_Crypt.Write(u8_Data, 0, u8_Data.Length);
    if (b_Encrypt)
        return Convert.ToBase64String(i_Mem.ToArray());
    else
        return Encoding.Unicode.GetString(i_Mem.ToArray());
}
catch
{
    return null;
}
finally
{
    i_Crypt.Close();
}

更好的是,如果您尝试了一点,您可能会在一个using块中使用您的MemoryStream和CryptoStream。

Should I call Close() or Dispose() for stream objects?

Using block vs IDisposabe.Dispose()

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

https://stackoverflow.com/questions/40724780

复制
相关文章

相似问题

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