1、基于 C#的文档加密器的实现摘 要随着计算机和通信技术的迅猛发展,大量敏感信息通过公共通信设施或计算机网络进行交换,特别是 Internet 的广泛应用、电子商务和电子政务的迅速发展,越来越多的个人信息需要严格保密,如银行账号、个人隐私等。正是这种对信息的机密性与真实性的需求,很有必要设计一个加密软件对其敏感信息加密。一个好的加密工具能够让用户方便快捷对重要信息进行有效保护,从而大大降低了公司的重要信息泄露的安全隐患,真正做到机密信息只供有权限的用户查阅。本系统采用 ASP.NET (C#)作为开发工具,系统主要功能包含:加密文件的密码设置、加密文件、解密密码的验证、解密文件等。加密功能需要扩
2、展的方面有:对网络数据流加密和解密;对节点加密和节点解密;对数据打包封装,实现网络上使用密文传输;局部文本加密替换。此外,密钥的分配必须通过安全的渠道进行传输,因为密钥的管理是关系到整个加密方案的重要安全因素。关键词:DES 加密器;ASP.NET (C#);文件加密;文件解密算法的编程实现 (一)int des(char *data, char *key,int readlen)参数:1.存放待加密明文的内存指针(长度为 readlen,可能经过填充;2.存放用户输入的密钥内存的指针3.待加密明文的长度(8 字节的倍数)功能: 生成加密密钥,把待加密的明文数据分割成 64 位的块,逐块完成
3、16 次迭代加密,密文存放 data 所指向的内存中。(二)int Ddes(char *data, char *key,int readlen)参数:1.存放待解密文的内存指针(长度为 readlen,可能经过填充;2.存放用户输入的密钥内存的指针3.待解密文的长度( 8 字节的倍数)功能: 生成解密密钥,把待解密文分割成 64 位的块,逐块完成 16 次迭代解密,解密后的明文存放在 data 所指向的内存中。(三)int des3(char *data, char *key, int n ,int readlen)参数:1.存放待加密明文的内存指针(长度为 readlen,可能经过填充;2
4、.存放用户输入的密钥内存的指针3.用户指定进行多少层加密4.待加密明文的长度(8 字节的倍数)功能: 生成加密密钥,把待加密的明文分割成 64 位的块,把第 i-1 层加密后的密文作为第 i 层的明文输入,根据用户指定的加密层数进行 n 层加密,最终生成的密文存放在 data 所指向内存中。说明:用户仅仅输入一条密钥,所有的加密密钥都是由这条密钥生成.(四)int Ddes3(char *data, char*key, int n ,int readlen)参数:1.存放待解密文的内存指针(长度为 readlen,可能经过填充;2.存放用户输入的密钥内存的指针3.用户指定进行多少层解密4.待解
5、密文的长度(8 字节的倍数)功能: 生成解密密钥,把待解密文分割成 64 位的块,把第 i-1 层解密后的“明文“作为第 i 层解密密文输入,根据用户指定的解密层数进行 n 层解密,最终生成的明文存放在 data 所指向内存中。说明:用户仅仅输入一条密钥,所有的解密密钥都是由这条密钥生成.(五) int desN(char*data,char*key,int n_key,int readlen)参数:1.存放待加密明文的内存指针(长度为 readlen,可能经过填充;2.存放用户输入的密钥内存的指针3.用户指定了多少条密钥4.待加密明文的长度(8 字节的倍数)功能: 生成加密密钥,把待加密的明
6、文分割成 64 位的块,把第 i-1 层加密后的密文作为第 i 层加密的明文输入,根据用户指定的加密层数进行 n 层加密,最终生成的密文存放在 data 所指向的内存中。说明:这里用户通过输入的密钥条数决定加密的层数,每轮 16 次迭代加密所使用的加密密钥是由用户自定的对应密钥生成。(六) int DdesN(char *data,char *key,int n_key,int readlen)参数:1.存放待解密文的内存指针(长度为 readlen,可能经过填充;2.存放用户输入的密钥内存的指针3.用户指定了多少条密钥4.待解密文的长度(8 字节的倍数)功能: 生成解密密钥,把待解密文分割成 64 位的块,把第 i-1 层解密后的”明文”作为第 i 层解的密文输入,根据用户指定的解密层数进行 n 层解密,最终生成的明文存放在 data 所指向的内存中。说明:这里用户通过输入的密钥条数决定解密的层数,每轮 16 次迭代加密所使用的解密密钥是由用户自定的对应。