- 使用ASP加密算法加密你的数据(二)
- 作者:Batman 来源:未知 添加时间:2003年3月6日 字体:大 中 小
- 80578Julain Sitkewich
dHzcLn在第一部分,讨论了如何生成密钥,下面将介绍如何使用这个密钥来加密和解密一个
dHzcLn字符串。
dHzcLn下面的代码就是能够同时实现这个功能的函数
dHzcLnCrypt.asp文件
dHzcLn<%
dHzcLnDim g_Key
dHzcLn
dHzcLnConst g_CryptThis = "Now is the time for all good men to come to the aid of their country."
dHzcLnConst g_KeyLocation = "c:\key.txt"
dHzcLn
dHzcLng_Key = mid(ReadKeyFromFile(g_KeyLocation),1,Len(g_CryptThis))
dHzcLn
dHzcLnResponse.Write "<p>ORIGINAL STRING: " & g_CryptThis & "<p>"
dHzcLnResponse.Write "<p>KEY &#118alue: " & g_Key & "<p>"
dHzcLnResponse.Write "<p>ENCRYPTED CYPHERTEXT: " & EnCrypt(g_CryptThis) & "<p>"
dHzcLnResponse.Write "<p>DECRYPTED CYPHERTEXT: " & DeCrypt(EnCrypt(g_CryptThis)) & "<p>"
dHzcLn
dHzcLnFunction EnCrypt(strCryptThis)
dHzcLn Dim strChar, iKeyChar, iStringChar, i
dHzcLn for i = 1 to Len(strCryptThis)
dHzcLn iKeyChar = Asc(mid(g_Key,i,1))
dHzcLn iStringChar = Asc(mid(strCryptThis,i,1))
dHzcLn ' *** uncomment below to encrypt with addition,
dHzcLn ' iCryptChar = iStringChar + iKeyChar
dHzcLn iCryptChar = iKeyChar Xor iStringChar
dHzcLn strEncrypted = strEncrypted & Chr(iCryptChar)
dHzcLn next
dHzcLn EnCrypt = strEncrypted
dHzcLnEnd Function
dHzcLn
dHzcLnFunction DeCrypt(strEncrypted)
dHzcLnDim strChar, iKeyChar, iStringChar, i
dHzcLn for i = 1 to Len(strEncrypted)
dHzcLn iKeyChar = (Asc(mid(g_Key,i,1)))
dHzcLn iStringChar = Asc(mid(strEncrypted,i,1))
dHzcLn ' *** uncomment below to decrypt with subtraction
dHzcLn ' iDeCryptChar = iStringChar - iKeyChar
dHzcLn iDeCryptChar = iKeyChar Xor iStringChar
dHzcLn strDecrypted = strDecrypted & Chr(iDeCryptChar)
dHzcLn next
dHzcLn DeCrypt = strDecrypted
dHzcLnEnd Function
dHzcLn
dHzcLnFunction ReadKeyFromFile(strFileName)
dHzcLn Dim keyFile, fso, f
dHzcLn set fso = Server.CreateObject("Scripting.FileSystemObject")
dHzcLn set f = fso.GetFile(strFileName)
dHzcLn set ts = f.OpenAsTextStream(1, -2)
dHzcLn
dHzcLn Do While not ts.AtEndOfStream
dHzcLn keyFile = keyFile & ts.ReadLine
dHzcLn Loop
dHzcLn
dHzcLn ReadKeyFromFile = keyFile
dHzcLnEnd Function
dHzcLn
dHzcLn%>
dHzcLn 在Crypt.asp中我dHzcLn们首先从密钥文件中得到密钥值,然后从这段密钥中
dHzcLn截取和我dHzcLn们需要加密的明文同样长度的密钥。然后使用一个简单的异或操作
dHzcLn将明文和密钥进行运算,那么得到的结果就是加密后的密文了。过程很简单的。
dHzcLn 由于是使用了异或操作,所以解密将非常简单,只要使用同样的密钥对密文
dHzcLn再次进行异或操作就能够解密了。
dHzcLn 在上面介绍的基础上,你可以少加改动,就可以使用同样的方法加密一个文件。
dHzcLn唯一需要注意的是,对于一个二进制文件,你需要做一些完整性检查以保证转换回来
dHzcLn的字符不要越界。
dHzcLn 现在你需要做的就是把密钥保存在服务器上的一个安全的地方(不能够被外部访问)
dHzcLn附注:
dHzcLn Vernam密码是由Gilbert Vernam (他是AT&T的工程师)在1918年发明的。
dHzcLn这是一种使用异或方法进行加密解密的方法。 80575
- 返回页面顶端


- 上一篇:使用ASP加密算法加密你的数据(一)
- 下一篇:ASP.NET中带有口令加密的注册页面
返回上一页
打印本文
加入收藏
页面最后更新时间:2010年3月10日