科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件如何用.NET 2.0 SecureString类保护敏感数据

如何用.NET 2.0 SecureString类保护敏感数据

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

.NET Framework 2.0开始提供SecureString类,可以方便地在内存中保存加密数据。以下是使用SecureString类的一些细节。

作者:builder.com.cn 2007年6月19日

关键字: Tony Patton SecureString DotNet

  • 评论
  • 分享微博
  • 分享邮件

处理社会安全号码、员工身份证号码等敏感数据是最为棘手的开发问题之一。.NET Framework包含了加密功能,但对于小型应用程序而言,它的功能过于强大。.NET Framework 2.0开始提供SecureString类,可以方便地在内存中保存加密数据。以下是使用SecureString类的一些细节。

什么时候应当使用SecureString

你可能感到怀疑,既然可以使用基本的String类,为什么还有必要使用SecureString类呢?问题在于String类的设计方面。例如,如果你有一个String类的实例包含某个人的社会安全号,你就希望应用程序在处理过程中将其安全保存,以避免泄露。

问题的关键在于安全保存文本,因为String类将其以明文形式保存。查明数据的保存位置需要对.NET字符串有一定了解。.NET字符串是不可变的。也就是说,字符串值的每一个变化都在内存中建立一个新的字符串。因此,内存中的各种敏感数据可能会被不严格的代码或用户访问。

这并不是说明为什么使用StringBuilder对象的最有效方法和解释。由于垃圾收集功能,你可能认为这并不是一个太大的问题,但利用.NET垃圾收集使用字符串恢复内存没有确定性。因此,如果数据确实十分敏感,你应当避免String类,而选择SecureString类这些其它方法。

在哪里能找到它

你可以在System.Security命名空间中找到SecureString类。微软文件描述SecureString类为表现需要保持机密状态的文本,因为它在内存中进行加密。SecureString类具有以下特性:

  • 它对保存在内存中的字符串值进行加密。它利用数据保护API(DPAPI),因此它只能在基于NT的平台上使用。
  • SecureString类遵循IDisposable模式。
  • 加密文本不能被轻易解密;也就是说,不存在可以迅速阅读字符串内容的ToString类(没人说过加密很容易)。

SecureString类的构造器负荷过多,允许你以两种方式建立类实例,如下表所示:

  • SecureString() :初始化一个类的新实例,但没有值。
  • SecureString (Char*, Int32):初始化类的一个新实例,给定Char对象的一个子数组和它的长度。

初始化对象后,你就可以使用类的各种方法和属性来处理它的内容。下表概括说明了一些重要的属性和方法:

  • AppendChar:允许你在类保存的字符串末尾增加一个字符。
  • InsertAt:允许你在字符串的特定位置插入一个字符。
  • RemoveAt:允许你在字符串的特定位置删除一个字符。
  • SetAt(int, char):允许你在特定的位置移植一个字符串值。
  • Clear:删除字符串值的内容。
  • Copy:复制保存在对象中的字符串值。
  • Dispose:释放对象使用的所有资源。
  • Length:返回安全字符串值的长度。
  • MakeReadOnly:使字符串的内容只读。这个过程不可逆。
  • IsReadOny:说明对象的内容是否只读。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章