快速业务通道

模拟信息加密流程图简介

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30
件,这里提供了两种方法,第一种把文件内容读取到一个数组里面,另外一种是需要时直接从文件中提取的指定的字节数组。第一种方法把文件内容读取到一数组,解密时分解数组,使用Buffer.BlockCopy( )函数分解既可。比如,从fileContent数组中偏移量1152处开始复制“length”长度字节复制到一个新的数组“Encrypt_Two”中去。int length = (int)fs.Length-1296;// -1152-144 ; //密文的长度AllEncryptedData
Encrypt_Two = new byte[ length ];
Buffer.BlockCopy(fileContent,1152,Encrypt_Two,0,length);

而采用第二种方法:

Encrypt_One = new byte[1152];
fs.Read(Encrypt_One,0,1152);

这样直接从文件流开始位置读取 1152 个字节到数组“Encrypt_One”中。但如果要提取字节不是从起点开始,那就需要设置文件流的位置:

//读取加密的明文
int length = (int)fs.Length-1296;// -1152-144 ; //密文的长度 AllEncryptedData
Encrypt_Two = new byte[ length ];
fs.Position = 1152 ; //文件流偏移位置了1152个字节
fs.Read(Encrypt_Two,0,length);

注意了fs.Read()方法内参数的表示啦,而这样表达:fs.Read(Encrypt_Two,length,length),程序会报告文件偏移量出现错误。

需要说明的是,在设计代码时,把主窗体程序所能使用到的功能都封装到一个类里面,且所有被使用到的函数都是静态类型,便于使用上的方便。测试程序,需要用到三对钥匙:发送者(A)、接收者(B)和时间戳服务器(DTS)的各自的私钥和公钥。基于流程图一,你使用时间戳服

务器私钥一次,A的私钥两次,B的公钥一次。基于流程图二,你使用时间戳服务器公钥一次,A的公钥两次,B的私钥一次。至于测试所用到钥匙,你可以在压缩包Encryption Demo\bin\Release目录可以看到三个文件夹,里面分别存放着发送者(A)、接收者(B)和时间戳服务器(DTS)的各自的钥匙。当然你也可以自己生成钥匙,点击“产生一对钥匙”按钮,见下图:

模拟信息加密流程图简介

那么产生的钥匙你可以在程序的bin\Release目录下找到。那么怎么使用本程序呢,你可以使用已经准备好的三对公钥,按照下图图示即可:

1、“打开文件”—选择你要加加密的文件,点击下面的“提交到DTS服务中心...”按钮。

模拟信息加密流程图简介

2、点击选项卡“加密步骤二”,直接点下面的按钮“开始以上步骤”,这中间会要求你打开钥匙文件,别搞错啊。

模拟信息加密流程图简介

3、最后一个选项卡,“开始解密”按钮,你也知道怎么做吧 :)

模拟信息加密流程图简介

注:这中间会出现对话框要求你打开密钥文件,可别选择错啊,要不,不会出现预期的目标。之所以这样做,本身就要你注意区分密钥与密钥的不同(要不,不能体现本程序的编写的意图。你说呢~!?J)。当然大家也可以自己使用更好对称加密算法、散列函数,比如 Rijndeal 对称加密算法、SHA512等,那就需要你重新计算这其中的字节偏移量啦(可有偿定制)。时间不充分哦,代码和注释写得有些乱,请凑合着看啦 J Bye_Bye !

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号