摘要是一种防止改动的方法,其中用到的函数叫摘要函数。这些函数的输入可以是任意大小的消息,而输出是一个固定长度的摘要。摘要有这样一个性质,如果改变了输入消息中的任何东西,甚至只有一位,输出的摘要将会发生不可预测的改变,也就是说输入消息的每一位对输出摘要都有影响。总之,摘要算法从给定的文本块中产生一个数字签名(fingerprint或message digest),数字签名可以用于防止有人从一个签名上获取文本信息或改变文本信息内容和进行身份认证。摘要算法的数字签名原理在很多加密算法中都被使用,如SO/KEY和PIP(pretty good privacy)。
Kerberos提供了一种解决这个较好方案,它是由MIT发明的,使保密密钥的管理和分发变得十分容易,但这种方法本身还存在一定的缺点。为能在因特网上提供一个实用的解决方案,Kerberos建立了一个安全的、可信任的密钥分发中心(Key Distribution Center,KDC),每个用户只要知道一个和KDC进行会话的密钥就可以了,而不需要知道成百上千个不同的密钥。
最早、最著名的保密密钥或对称密钥加密算法DES(Data Encryption Standard)是由IBM公司在70年代发展起来的,并经政府的加密标准筛选后,于1976年11月被美国政府采用,DES随后被美国国家标准局和美国国家标准协会(American National Standard Institute,ANSI)承认。
Do While Not EOF(1) '跳到文件结尾
Get #1, , bytBuffer
Loop
iPassLen = Len(sPass) '密码长度
iCount = 1
For i = 1 To 8
Put #1, , CByte(256)
Get #2, , bytBuffer
Do While Not EOF(2) '循环到文件末尾
bytBuffer = bytBuffer Xor Asc(Mid(sPass, iCount, 1)) '异或加密数据
iCount = (iCount Mod iPassLen) + 1 '密码循环
Put #1, , bytBuffer
Get #2, , bytBuffer
Loop
Close #2 '关闭文件
Close #1
解密部分:
Open sFile1 For Binary Access Read As #2
Open sFile For Binary Access Write As #1
Seek #2, glbmpsize + 1
'iPassLen = Len(sPass)
'iCount = 1
Get #2, , bytBuffer
Do While Not EOF(2)
' bytBuffer = bytBuffer Xor Asc(Mid(sPass, iCount, 1))'异或解密数据
'iCount = (iCount Mod iPassLen) + 1
Put #1, , bytBuffer
Get #2, , bytBuffer
Loop
Close #2
Close #1