当前位置: 首页 > 图文教程 > 网络编程 > ASP > 使用ASP加密算法加密你的数据(二)

ASP
利用ASP输出excel文件一例
asp中使用js的encodeURIComponent
ASP动态网站制作中使用MYSQL的分析
如何编写通用的ASP防SQL注入攻击程序
ASP脚本变量、函数、过程和条件语句
ASP内建对象Application和Session
ASP基础教程:常用的 ASP ActiveX 组件
ASP程序漏洞解析及黑客入侵防范方法
ASP访问带多个参数的存储过程
用ASP和SQL语句动态的创建Access表
ASP初学者学习ASP指令
ASP开发中有用的函数(function)集合(1)
ASP开发中有用的函数(function)集合(2)
ASP开发中有用的函数(function)集合(3)
ASP网站程序自动升级实现的方法
ASP开发中的(VBScript)类基础学习
ASP代码:防止重复多次提交表单的方法
在ASP中使用类,实现模块化
ASP基础教程之学习ASP中子程序的应用
ASP技巧:ASP中三个常用语句的使用技巧

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 74 ::
收藏到网摘: n/a

      
  
    在第一部分,讨论了如何生成密钥,下面将介绍如何使用这个密钥来加密和解密一个字符串。
    下面的代码就是能够同时实现这个功能的函数
  Crypt.asp文件
  <%
  Dim g_Key
  
  Const g_CryptThis = "Now is the time for all good men to come to the aid of their country."
  Const g_KeyLocation = "c:\key.txt"
  
  g_Key = mid(ReadKeyFromFile(g_KeyLocation),1,Len(g_CryptThis))
  
  Response.Write "<p>ORIGINAL STRING: " & g_CryptThis & "<p>"
  Response.Write "<p>KEY VALUE: " & g_Key & "<p>"
  Response.Write "<p>ENCRYPTED CYPHERTEXT: " & EnCrypt(g_CryptThis) & "<p>"
  Response.Write "<p>DECRYPTED CYPHERTEXT: " & DeCrypt(EnCrypt(g_CryptThis)) & "<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 & 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 & 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 & ts.ReadLine
  Loop
  
  ReadKeyFromFile = keyFile
  End Function
  
  %>
    在Crypt.asp中我们首先从密钥文件中得到密钥值,然后从这段密钥中截取和我们需要加密的明文同样长度的密钥。然后使用一个简单的异或操作将明文和密钥进行运算,那么得到的结果就是加密后的密文了。过程很简单的。由于是使用了异或操作,所以解密将非常简单,只要使用同样的密钥对密文再次进行异或操作就能够解密了。在上面介绍的基础上,你可以少加改动,就可以使用同样的方法加密一个文件。唯一需要注意的是,对于一个二进制文件,你需要做一些完整性检查以保证转换回来
  的字符不要越界。现在你需要做的就是把密钥保存在服务器上的一个安全的地方(不能够被外部访问)
  
  附注:
    Vernam密码是由Gilbert Vernam (他是AT&T的工程师)在1918年发明的。这是一种使用异或方法进行加密解密的方法。