您的位置: turnitin查重官网> 工程 >> 电气工程 >> 电气一体化 >文本文件基于.net平台文本文件加密器设计

文本文件基于.net平台文本文件加密器设计

收藏本文 2024-03-12 点赞:6849 浏览:22764 作者:网友投稿原创标记本站原创

摘要:本文基于.net平台设计了一个可加密文本文件的加密器,可用于

源于:论文标准格式范文www.udooo.com

日常保存的自己敏感文字信息,具有一定的实用性。
关键词:.net DES 加密 文本文件
1007-9416(2013)05-0197-01
Windows平台上的文本文件的以扩展名为.txt为代表的一类ASCII码文件,其中.txt由于其结构简单,被广泛用于记录信息或存储个人敏感信息如电话、卡号、等,而其它文本文件常用于各种编程语言的脚本或配置文件,如.jsp、.cpp、.html等。所以文件的安全性就显得尤为重要,不论保存有私人信息的txt文件还是程序员的脚本文件的泄漏都会对用户造成极大的损失,鉴于此,可以设计一种文本加密解密器,来保护重要的文件。

1 分析文本文件类型

在windows平台上有常用的三种字符集/编码(Charset/encodin)格式:ANSI、Unicode、UTF8。软件打开一个文本文件时,首先会判断这个文本是使用哪种字符集的哪种编码保存的。一般采用三种方式来决定文本的字符集和编码:检测文件头标识、提示用户选择、根据一定的规则猜测。文本文件的头字节Charset/encodin如表1。
本软件采用是检测文本最开始的几个字节,软件判断文本编码类型是考虑到编码格式的不同会影响解密后文本的还原,经验证,ANSI编码格式的文本在解密后中文显示为乱码,所以本软件不适应ANSI编码格式,用户可通过文本编辑器如记事本转化成其他编码格式再进行加密和解密。

2 程序设计

2.1 加密算法的选择

加密算法的一般有对称和非对称两种,对称算法是使用相同的密钥来加密和解密数据。非对称算法是使用一个公钥进行加密,而使用另一个私钥来解密。对称算法使用一个密钥(key)和一个初始化向量(IV)来保证数据的安全。使用该数据的双方都必须知道这个密钥和初始化向量才能够加密和解密数据。本软件考虑到用户使用的便携型,简化了操作,在程序里内置了初始化向量,只需用户提供秘钥即可加密、解密文本文件。
软件使用.net内置的DES算法加密解密文本内容,DES采用8个字节作为密钥。从安全方面考虑,如果使用随机密钥,则对称加密算法最安全。所以生成密钥的最好方法是使用随机过程来获得所需的8个字节。但是,从使用者角度讲,8个随机字节并不容易记住。在此软件中,使用“”来生成密钥。也就是,是一个8个字符的字符串,使用字符的ASCII值来初始化构成密钥的字节数组。

2.2 使用加密类和CryptoStream 类

DESCryptoServiceProvider类提供了基于数据加密标准(DES)的一种对称加密算法。对称加密需要密钥和初始化向量(IV)对数据进行加密,要解密的数据,必须具有相同的密钥和IV。
在.net中,加密和解密是使用过程流来实现的。一般加密步骤为:先从某个输入流(例如,磁盘中的未加密文件)传入字节;再将字节送到加密流,加密流本身连接到某个输出流;最后加密流加密字节并自动将字节放到相关联的输出流中。
使用CryptoStream类实现将数据流链接到加密转换的流,通过对流进行简单读或写,可以对数据进行加密或解密[3]。

2.3 关键代码的实现

定义DES加密器的初始化向量和秘钥:本软件采用两种方式,可以采用系统给定的秘钥或者选择自己输入秘钥以增强安全性;为了用户容易记忆,可随机输入,程序会自动在用户输入的秘钥上添加或截取以补齐8位字符。
string iv = "123abcdqaz"; // 初始化向量,必须是>=8位长的字符串
string key = "zaq1xsw2"; // 加密的秘钥,必须是8位长的字符串
实现DES的过程流要先实例化Cryptostream对象,还需要指定输出流(fsout)。
FileStream fsOut = File.Open(strOutName,FileMode.Create,FileAccess.Write);
加密程序:
可以分别使用 Createencryptor 和Createdecryptor 方法创建加密器或解密器。DESCryptoServiceProvider des = new DESCryptoServiceProvider();
CryptoStream csDecrypt = new CryptoStream(fsOu,des.CreateEncryptor(btKey, btIV),CryptoStreamMode.Write);
BinaryReader br = new BinaryReader(fsIn);//创建阅读器来读加密文本
解密程序:
CryptoStream csDecrypt = new CryptoStream(fsOut, des.CreateDecryptor(btKey, btIV), CryptoStreamMode.Read);

2.4 程序运行测试

经测试,选择非ANSI编码的文本经加密、解密后会恢复到原样,并支持中文汉字,同样也适用于其他非txt扩展名的文本文件。
3 结语
软件的设计是从使用者的角度出发,为提高文本文件安全性设计的,其在windows平台上具有一定的实用性,不仅适用于txt文本文件的加密解密,还可广泛适用于其他非txt扩展名的文本文件的加密,具有明显的现实意义。
参考文献
谭浩强.高级语言程序设计[M].清华大学出版社2012.6.
蔡皖东.网络与信息安全[M].西北工业大学2011.3.
[3]王小科,王军等编著C#开发实战1200例[M].清华大学出版社,2011.6.

copyright 2003-2024 Copyright©2020 Powered by 网络信息技术有限公司 备案号: 粤2017400971号