大容量数据安全传输系统设计与实现(具体)
一、需求
两个主体间实现远程大容量数据文件秘密传输(超过1G大小的容量)
1)设计并实现支持大容量数据秘密传输的系统;
2)该系统支持数据完整性和来源验证;
开发坏境需求:windows平台,语言平台不限。
二、原理
(1)hash函数
hash函数是将任意长度的输入变换成固定长度输出的函数,该输出称为散列值。MD5是一种被广泛使用的hash函数,可以产生出一个128位的散列值,主要用于确保信息传输完整一致。MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过一系列处理后,算法输出由四个32位分组组成的128位散列值。具体的步骤如下所示:
1、填充
如果输入信息的长度(bit)对512求余的结果不等于448,就需要填充使得对512求余结果等于448,填充的方法是填充一个1和n个0。填充完成后,信息的长度为N* 512+448
2、记录信息长度
用64位内存来存储填充前信息长度。这64位加在第一步结果的后面,这样信息长度就变为N* 512 + 448 + 64 = (N+1)*512
3、装入标准的幻数
A=0X67452301L,B=0XEFCDAB89L,C=0X98BADCFEL,D=0X10325476L。
4、循环运算
把消息分以512位为一分组进行处理;每一个分组进行4轮变换,以上面所说4个标准的幻数为起始变量进行计算,重新输出4个变量;以这4个变量再进行下一分组的运算,如果已经是最后一个分组,则这4个变量为最后的结果,即MD5值。
(2)数字签名
数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过。RSA加密是一种非对称加密,可以在不直接传递密钥的情况下,完成解密,从而验证信息的完整性。