密码的故事 (转自MSDN)

作者:袖梨 2022-07-02
密码的故事
Billy Hollis
2002 年 3 月 14 日
本文是由一个问题引出的。我需要一种将密码保存在加密文件中的方法,因为我需要记住许多密码,但记忆力却已大不如前。我知道有许多商用工具能够做到这一点,但我感到学习 .NET 中的一项新技术真的很有好处。
我用 Visual Basic® .NET 完成了一个简单而完整的程序,用于加密和解密文件,从中学到了许多知识。既然加密对于多种开发都是一个重要问题,本文就介绍一下如何构造这样的程序。
有各种低级别的技术可以用于加密,如 Microsoft Crypto API。而在 .NET 中,则是将这些复杂内容打包在各个 .NET 框架类中,并且由一个 System.Security 命名空间包含这些与加密相关的类。我们不可能查看该命名空间中的所有类,但通过分析一个最简单的、使用数据加密标准 (DES) 算法进行加密和解密的类,可以大概了解它们的工作原理。
正如前面提到的,我们要执行一个完整的加密和解密文件的过程,但首先需要解释一下该程序中涉及的许多基本概念。除有关密码的原理外,还有必要简单讨论一下 .NET 中的流,因为加密类是以流的形式实现的。理解流
流是 .NET 中处理字节的基本概念。下面简单介绍一下其工作原理。
假设要读取一个文件,将所有大写字母更改为小写字母,然后将结果写入另一个文件。图 1 显示了要完成的各个步骤的关系图。
图 1:读取文件、处理内容并写回结果的过程
在 .NET 中,完成此过程的最好方法是使用流。“流”是一个对象,用于接收和/或发送信息字节。流有两种 - 后端流和过程流。后端流
后端流从某个可以保存字节的位置获取字节或将字节存储到该位置。文件流就是一种后端流。文件流使用文件作为字节的后端存储,并读取或写入该文件。
文件流在 .NET 的 FileStream 类中实现,该类位于 System.IO 命名空间。FileStream 对象使用 Read 和 Write 方法访问文件。将 FileStream 对象附加到现有文件时,您可以使用 Read 方法,以一系列字节的形式获取文件内容。而使用 Write 方法时,FileStream 对象可以将一系列字节写入文件(现有文件或新文件)。FileStream 类还使用 Seek 方法来定位文件中的特定位置。

相关文章

精彩推荐