扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:builder.com.cn 2007年6月19日
处理社会安全号码、员工身份证号码等敏感数据是最为棘手的开发问题之一。.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类具有以下特性:
SecureString类的构造器负荷过多,允许你以两种方式建立类实例,如下表所示:
初始化对象后,你就可以使用类的各种方法和属性来处理它的内容。下表概括说明了一些重要的属性和方法:
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者