模拟信息加密流程图简介

孤独的西门红人

孤独的西门红人

2016-01-29 12:13

模拟信息加密流程图简介,模拟信息加密流程图简介

模拟信息加密流程图简介

作者:Nie Yong

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/)

下载源代码

  Encryption_Demo 代码模拟了图一和图二的流程图内容,但仅仅只是模拟,谈不上什么应用;其应用过程限于程序间的传递过程,没有涉及到网络间数据传输,所以仅仅是模拟其过程而已。



图一 采用安全认证的信息加密流程图



图二 采用安全认证技术的信息解密过程图



图三 采用安全认证的信息加密流程图文字说明


图四 采用安全认证技术的信息解密过程图的文字说明

  Encryption_Demo 代码没有什么新奇之处。发布的目的在于使大家了解“采用安全认证的信息加密流程图”的运作过程。代码,大家可以下载看一看。下面我要说的是,最主要的工作体现在字节数组的偏移量的计算上。比如在本程序中采用MD5散列,其散列值固定长度16个字节;采用DES算法分组加密,其Key和IV字节数都为8个字节;采用RSA进行签名,签名长度固定为128个字节,而加密结果的长度呢,我们要加密的字节数组长度为128+8+8 = 144,那么RSA非对称加密后的字节数长度就为1152个字节长度。那么,在第一个流程图中,合并后的整个密文数据字节长度,我们知道不固定,可是它的第一部分和第三部分长度是固定的(再强调一次,我们这里使用DES分组加密算法,MD5散列函数,RSA方法签名和加密,下面分析结果也都是建立这基础上的)。比如:

加密后的会话密文 —— RsaEncryptData :1152
摘要签字 —— CombinData : 144
我们可以获得整个要截密文件的长度

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/)
string fileName = OpenFile("请打开要解密的文件:");FileStream fs = new FileStream(fileName,FileMode.Open,FileAccess.Read);

  (int)fs.Length - 1152-144 运算结果就是中间密文---EncryptionDate 的长度。解密中间密文后,紧接着就要处理时间戳啦。我们分析时间戳的字节数组组成吧:

文件散列长度 :16接收时间 :23签名长度 :128总共长度 :167

  既然知道这些字节数组的组成,你该知道怎么做了吧?关于处理接收时间戳的处理上,有点要注意的:

public static byte [] GetTimeNow(){//这样转化成的格式为:2004-11-09 13:04:28-108 23个字节DateTime now = DateTime.Now;System.Text.UTF8Encoding utf = new System.Text.UTF8Encoding();string month = null ;if(now.Month<10)month = "0"+now.Month.ToString();elsemonth = now.Month.ToString();string day = null;if(now.Day<10)day = "0" + now.Day.ToString();elseday = now.Day.ToString();string millisecond = null;if(now.Millisecond<10)millisecond = "00"+now.Millisecond.ToString();if(now.Millisecond=10&&now.Millisecond<=99)millisecond = "0" + now.Millisecond.ToString();if(now.Millisecond=100)millisecond = now.Millisecond.ToString();string FullFormatTime = now.Year.ToString() +      "-" + month + "-" +       day + " " +       now.ToLongTimeString() + "-" + millisecond ;//比如:2004-11-09 13:04:28-108return utf.GetBytes( FullFormatTime );         } 
  这样处理后的结果是接收时间精确到毫秒,且固定字节长度为23个字节。我们把第一个流程图的结果写进文件中去(其路径与你要加密的原始明文在同一目录下,主要是为了储存的方便),而流程图二的解密结果则保存在binRelease目下。这样解密时需要读取文件,这里提供了两种方法,第一种把文件内容读取到一个数组里面,另外一种是需要时直接从文件中提取的指定的字节数组。第一种方法把文件内容读取到一数组,解密时分解数组,使用Buffer.BlockCopy( )函数分解既可。比如,从fileContent数组中偏移量1152处开始复制“length”长度字节复制到一个新的数组“Encrypt_Two”中去。
int length = (int)fs.Length-1296;// -1152-144 ; //密文的长度AllEncryptedDataEncrypt_Two = new byte[ length ];Buffer.BlockCopy(fileC      
展开更多 50%)
分享

猜你喜欢

模拟信息加密流程图简介

C语言教程 C语言函数
模拟信息加密流程图简介

word制作流程图

电脑入门
word制作流程图

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

电脑维修流程图

电脑入门
电脑维修流程图

coreldraw绘制流程图

CorelDRAW 电脑应用
coreldraw绘制流程图

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

wps怎么做流程图 wps流程图怎么画

软件教程
wps怎么做流程图 wps流程图怎么画

wps怎么制作流程图

wps教程 wps office教程
wps怎么制作流程图

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

应用JDOM处理数据库到XML转换的JSP实现

应用JDOM处理数据库到XML转换的JSP实现

PSV《梦幻之星 新星》女前舰长的S级任务心得

PSV《梦幻之星 新星》女前舰长的S级任务心得
下拉加载更多内容 ↓