使用ASP加密算法加密你的数据(二)

在第一部分,讨论了如何生成密钥,下面将介绍如何使用这个密钥来加密和解密一个
字符串。
下面的代码就是能够同时实现这个功能的函数
Crypt.asp文件

1   
2Dim g_Key   
3  
4Const g_CryptThis = "Now is the time for all good men to come to the aid of their country."   
5Const g_KeyLocation = "c:\key.txt"   
6  
7g_Key = mid(ReadKeyFromFile(g_KeyLocation),1,Len(g_CryptThis))   
8  
9Response.Write "

<p>ORIGINAL STRING: " &amp; g_CryptThis &amp; "<p>"
Response.Write "<p>KEY VALUE: " &amp; g_Key &amp; "<p>"
Response.Write "<p>ENCRYPTED CYPHERTEXT: " &amp; EnCrypt(g_CryptThis) &amp; "<p>"
Response.Write "<p>DECRYPTED CYPHERTEXT: " &amp; DeCrypt(EnCrypt(g_CryptThis)) &amp; "<p>"

Function EnCrypt(strCryptThis)
Dim strChar, iKeyChar, iStringChar, I
for I = 1 to Len(strCryptThis)
iKeyChar = Asc(mid(g_Key,I,1))
iStringChar = Asc(mid(strCryptThis,I,1))
' *** uncomment below to encrypt with addition,
' iCryptChar = iStringChar + iKeyChar
iCryptChar = iKeyChar Xor iStringChar
strEncrypted = strEncrypted &amp; Chr(iCryptChar)
next
EnCrypt = strEncrypted
End Function

Function DeCrypt(strEncrypted)
Dim strChar, iKeyChar, iStringChar, I
for I = 1 to Len(strEncrypted)
iKeyChar = (Asc(mid(g_Key,I,1)))
iStringChar = Asc(mid(strEncrypted,I,1))
' *** uncomment below to decrypt with subtraction
' iDeCryptChar = iStringChar - iKeyChar
iDeCryptChar = iKeyChar Xor iStringChar
strDecrypted = strDecrypted &amp; Chr(iDeCryptChar)
next
DeCrypt = strDecrypted
End Function

Function ReadKeyFromFile(strFileName)
Dim keyFile, fso, f
set fso = Server.CreateObject("Scripting.FileSystemObject")
set f = fso.GetFile(strFileName)
set ts = f.OpenAsTextStream(1, -2)

Do While not ts.AtEndOfStream
keyFile = keyFile &amp; ts.ReadLine
Loop

ReadKeyFromFile = keyFile
End Function

 1在Crypt.asp中我们首先从密钥文件中得到密钥值,然后从这段密钥中   
 2截取和我们需要加密的明文同样长度的密钥。然后使用一个简单的异或操作   
 3将明文和密钥进行运算,那么得到的结果就是加密后的密文了。过程很简单的。   
 4由于是使用了异或操作,所以解密将非常简单,只要使用同样的密钥对密文   
 5再次进行异或操作就能够解密了。   
 6在上面介绍的基础上,你可以少加改动,就可以使用同样的方法加密一个文件。   
 7唯一需要注意的是,对于一个二进制文件,你需要做一些完整性检查以保证转换回来   
 8的字符不要越界。   
 9现在你需要做的就是把密钥保存在服务器上的一个安全的地方(不能够被外部访问)   
10附注:   
11Vernam密码是由Gilbert Vernam (他是AT&amp;T的工程师)在1918年发明的。   
12这是一种使用异或方法进行加密解密的方法。</p></p></p></p></p></p></p></p>
Published At
Categories with Web编程
comments powered by Disqus