基于加密技术的隐私保护在WEB信息系统中的应用研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于加密技术的隐私保护在WEB信息系统中的应用研究
摘要:md5算法(message-digest algorithm 5,信息-摘要算法5)是一种针对信息传输中对原始信息进行重新编列及重新组合的数学方法,是数学理论应用在计算机领域的一个典型事例。md5算法是一种免费使用且安全的散列算法,经md5算法处理后的密文一般不能恢复成原文,所以要破解md5算法非常困难。在信息管理系统中,md5一般用于用户注册口令的加密。使用md5算法之前要先把完整的数据信息(如汉字)通过运算划分成一个个细小的定长部分,之后才能使用算法把用数字签名软件签署私人密钥后所产生的大容量信息压缩成一种保密的格式,即把一个任意长度的字节串通过md5加密算法变成一定长度的十六进制数字字符串。
关键词:md5算法;散列算法;数字签名
中图分类号:tp311 文献标识码:a 文章编号:1009-3044(2013)12-2751-02
md5算法能将输入的不定长度信息,变换为固定长度128bits。基本方式为求余、取余、调整长度与链接变量进行循环运算,最后得出结果。
md5运算由64次循环构成,分成4组16次。f表示非线性函数,mi表示一个32位的输入数据,ki表示一个32位的常数,用于完成每次不同的计算。
md5加密算法简要描述为:将输入的任意长度的消息,以512位进行分组,不足512位的用0填充,再将每组分为16个32位的子
分组,经过一系列的算法处理后,输出4个32位的子分组,将这4个分组级联成一个128位的消息摘要。
md5加密算法步骤:
1)填充消息,使消息长度与448模512同余。至此,消息长度被扩展到n*512+448位,n为非负整数。填充方法为:在消息后面添加一个1,再补充多个0,直到消息长度恰好是512的整数倍。2)在消息后面添加一个用64位表示的填充前的消息长度。
上述两步处理所得的消息长度=n*512+448+64=(n+1)*512,正好为512的整数倍。这样满足了后续处理中对消息数据长度的要求和规范。
3)给四个32位的整型链接变量(chaining variable)赋值,依次为:a=0x67452301,b=0xefcdab89,c=0x98badcfe,
d=0x10325476。将这四个链接变量拷贝到四个数据变量中:a复制到a,b复制到b,c复制到c,d复制到d。
4)进行消息处理。首轮循环需要进行16次操作,每次操作要对a、b、c和d 4个变量中的任意3个作一次逻辑运算,并将计算结果与未经运算的第四个变量相加。把上述运算结果向左循环移动一个不定的数,再加上a、b、c或d 四个变量中的任意一个。最后用这个结果替换a、b、c或d 四个变量中的一个。循环的累计次数是512位消息分组的总计数目。
1 基于md5算法的用户敏感数据隐私保护模块设计
在拆迁信息管理平台中,需要对一些敏感的用户数据信息如帐号
密码,身份证验证码等进行不可逆且安全的加密,下面给出部分本系统中基于md5加密算法的信息隐私保护模块核心代码:
1)md5 16位加密模块
// md5 16位加密,加密后密码为大写
static string get16md5upperstr(string str)
{cryptomd5 md = new cryptomd5();
string str1=bitconverter.tostring(md.calculatehash
(utf8encoding.default.
getbytes(str)),4,8);
str1 = str1.replace(”*”,““);
return str1; }
// md5 16位加密,加密后密码为小写
static string get16md5lowerstr(string str)
{cryptomd5 md = new cryptomd5();
string str1=bitconverter.tostring(md. calculatehash (utf8encoding.default.
getbytes(str)),4,8);
str1= str1.replace(”*”,““);
str1= str1.tolower();
return str1; }
2)md5 32位加密模块
static string usermd5 (string str)
{ string s1 = str;
string pwd = ““;
cryptomd5 md = cryptomd5.create();//实例化一个md5对像// 加密后是一个字节类型的数组,这里要注意编码
utf8/unicode等的选择
byte[] bt = md. calculatehash (encoding.utf8.getbytes (sl));
for (int i = 0; i 加密技术在网络传输中的应用分为在客户端进行加密和在服务器端进行加密。在客户端加密时,客户端先对数据进行加密,再把密文传送给服务器,服务器对接收到的密文进行解密操作。在服务器端加密数据的过程与客户端一样,亦即是先对数据进行加密后传给客户端,客户端再对密文进行解密。
通常,web网站的客户端和服务器使用网页脚本加解密数据。综合对称加密算法与非对称加密算法的优势,拆迁web系统采用如下的加密技术操作:
1)服务器收到客户端的访问请求后,通过调用相应的后台事件处理程序,根据公开密钥算法产生一组公开密钥和私有密钥,并将公开密钥作为加密密钥。之后,服务器把加密密钥和动态生成的网页传输用户端。
2)客户端收到网页后,调用公开密钥算法函数,产生一组对称密钥,把公开密钥当作加密密钥,然后传给服务器。由此建立客户端与服务器之间的加密数据传输。