csharp 利用图片对文件进行加密与解密

利用图片对文件进行加密与解密

 实例说明

本实例在加密时,使用指定的图片生成加密密钥,然后对文本文件进行加密;在解密时,使用加密时的图片生成解密密钥,然后对加密的文本文件进行解密。在本实例的窗体中,首先打开一个图片,用来生成加密或解密的密钥,然后选择要加密或解密的文本文件,最后点击“加密”或“解密”按钮,实现对文本文件的加密或解密。实例运行效果如图1所示。

图1 利用图片对文件进行加密与解密

 关键技术

实现本实例,主要用到了RC2CryptoServiceProvider类、BinaryWriter类的Write方法、File类的Delete方法和Copy方法分别进行介绍。

(1)RC2CryptoServiceProvider类

该类定义访问RC2算法的加密服务提供程序(CSP)实现的包装对象,无法继承此类。

(2)BinaryWriter类

该类以二进制形式将基元类型写入流,并支持用特定的编码写入字符串。它的构造器语法格式如下:

public BinaryWriter (Streamoutput)

参数说明

output:表示输出流。

(3)BinaryWriter类的Write方法

该方法将一个无符号字节写入当前流,并将流的位置提升一个字节。其语法格式如下:

public virtual void Write (byte value)

参数说明

value:表示要写入的无符号字节。

(4)File类

该类提供用于创建、复制、删除、移动和打开文件的静态方法,并协助创建FileStream对象,该类是个静态类。

(5)File类的Delete方法

该方法删除指定的文件。如果指定的文件不存在,则引发异常。其语法格式如下:

public static void Delete (string path)

参数说明

path:表示要删除的文件的名称。

(6)File类的Copy方法

该方法将现有文件复制到新文件,不允许改写同名的文件。其语法格式如下:

public static void Copy (string sourceFileName,string destFileName)

参数说明

sourceFileName:要复制的文件。

destFileName:目标文件的名称,不能是一个目录或现有文件。

 设计过程

(1)打开Visual Studio 2008开发环境,新建一个Windows窗体应用程序,命名为EncryptTextFileTwo。

(2)在Form1窗体中,主要添加一个TextBox控件,用来显示加密或解密文件的路径;添加一个OpenFileDialog控件,用来选择要加密或解密的文件和打开密钥的图片;添加4个Button控件,用来执行加密、解密、打开文件和打开图片操作;添加一个PictureBox控件,用于显示密钥图片。

(3)程序主要代码如下:

单击“加密”按钮实现利用图片对文本文件进行加密,“加密”按钮的Click事件代码如下:

 

 秘笈心法

心法领悟002:使用CryptoStream类的FlushFinalBlock方法。

在调用CryptoStream类的Write方法写入加密或解密流之后,需要调用该类的FlushFinalBlock方法,该方法实现用缓冲区的当前状态更新基础数据源或储存库,随后清除缓冲区。

 

如无特殊说明均为原创,转载请附上原文地址。:佛系糖果的博客 » csharp 利用图片对文件进行加密与解密

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下呗~

支付宝扫一扫打赏

微信扫一扫打赏