用ASP加密算法“保护”你的数据

加密|数据|算法

    首先简单介绍一下有关加密的背景。由于美国禁止几种密码算法的对外出口的加密位数(例如SSL的40位加密限制),本文将介绍一种ASP可以使用的简单字符加密算法,而不是那些受限制的加密算法。其实,这里介绍的加密算法对于一般的运用来说已经足够解密人麻烦一阵子的了。它的加密基础是最简单的Vernum密码方法,我将在下一篇文章中介绍这种密码。
  它的基本原理是,需要有一个需要加密的

  明文和一个随机生成的解密钥匙文件。然后使用这两个文件组合起来生成密文。

  (明文) 组合 (密钥) = 加密后的密文

  所以本文介绍的是生成密钥的代码。我们假设我们生成的密钥为512位长的密钥,它已经足够来加密一个文本字符了。代码如下:

  KeyGeN.asp文件

  <%

  '******************************

  ' KeyGeN.asp

  '******************************

  Const g_KeyLocation = "C:\key.txt"

  Const g_KeyLen = 512  

  On Error Resume Next   

  Call WriteKeyToFile(KeyGeN(g_KeyLen),g_KeyLocation)   

  if Err <> 0 Then

  Response.Write "ERROR GENERATING KEY." & "<P>"

  Response.Write Err.Number & "<BR>"

  Response.Write Err.Description & "<BR>"

  Else

  Response.Write "KEY SUCCESSFULLY GENERATED."

  End If  

  Sub WriteKeyToFile(MyKeyString,strFileName)

  Dim keyFile, fso

  set fso = Server.CreateObject("scripting.FileSystemObject")

  set keyFile = fso.CreateTextFile(strFileName, true)

  keyFile.WriteLine(MyKeyString)

  keyFile.Close

  End Sub  

  Function KeyGeN(iKeyLength)

  Dim k, iCount, strMyKey

  lowerbound = 35

  upperbound = 96

  Randomize ' Initialize random-number generator.

  For I = 1 to iKeyLength

  s = 255

  k = Int(((upperbound - lowerbound) + 1) * Rnd + lowerbound)

  strMyKey = strMyKey & Chr(k) & ""

  next

  KeyGeN = strMyKey

  End Function  

  %>

  在IIS下运行上面的KeyGeN.asp页面。你只需要如此做一次,他将把密钥写入文件c:\key.txt中 (如果你愿意的话,你也可以把这个文件放到另外一个更加安全的地方).然后你可以打开这个key.txt文件,它将包含512个ASCII码在35到96之间的字符.并且由于是随机生成的,所以每个人的私人密钥文件key.txt将是不一样的,下面是一个例子密钥文件:  

  IY/;$>=3)?^-+7M32#Q]VOII.Q=OFMC`:P7_B;LG'=I+@5%*+OP:F_=';'NSY`-^S.`AA=BJ3M0.WF#T5LGK(=/<:+C2K/^7AI$;PU'OME2+T8ND?W$C(J\,;631'M-LD5F%%1TF_&K2A-D-54[2P,#'*JU%6`0RF3CMF0(#T07U'FZ=>#,+.AW_/+']DIB;2DTIA57TT&-)O'/*F'M>H.XH5W^0Y*=71+5*^`^PKJ(=E/X#7A:?,S>R&T;+B#<:-*\@)X9F`_`%QA3Z95.?_T#1,$2#FWW5PBH^*<])A(S0@AVD8C^Q0R^T1D?(1+,YE71X+.*+U$:3XO^Q].KG&0N0];[LJ
  下面再仔细分析一下上面的程序,我们发现其中的lowerbound和upperbound的数值其实就是你想使用来加密的ASCII字符范围。后面一篇文章中将介绍如何使用这个密钥来加密和解密一个字符串.

  在第一部分,讨论了如何生成密钥,下面将介绍如何使用这个密钥来加密和解密一个字符串。

  下面的代码就是能够同时实现这个功能的函数

  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中我们首先从密钥文件中得到密钥值,然后从这段密钥中截取和我们需要加密的明文同样长度的密钥。然后使用一个简单的异或操作将明文和密钥进行运算,那么得到的结果就是加密后的密文了。过程很简单的。由于是使用了异或操作,所以解密将非常简单,只要使用同样的密钥对密文再次进行异或操作就能够解密

时间: 2024-11-03 06:00:04

用ASP加密算法“保护”你的数据的相关文章

以前收集的一些资料---使用ASP加密算法加密你的数据(二)

加密|数据|算法          以前收集的一些资料---使用ASP加密算法加密你的数据(二)Julain Sitkewich在第一部分,讨论了如何生成密钥,下面将介绍如何使用这个密钥来加密和解密一个字符串.下面的代码就是能够同时实现这个功能的函数Crypt.asp文件<% Dim g_Key Const g_CryptThis = "Now is the time for all good men to come to the aid of their country."Co

使用ASP加密算法加密你的数据

使用ASP加密算法加密你的数据简介首先简单介绍一下有关加密的背景.由于美国禁止几种密码算法的对外出口的加密位数(例如SSL的40位加密限制),本文将介绍一种ASP可以使用的简单字符加密算法,而不是那些受限制的加密算法.其实,这里介绍的加密算法对于一般的运用来说已经足够解密人麻烦一阵子的了.它的加密基础是最简单的Vernum密码方法,我将在下一篇文章中介绍这种密码.它的基本原理是,需要有一个需要加密的明文和一个随机生成的解密钥匙文件.然后使用这两个文件组合起来生成密文.(明文) 组合 (密钥) =

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

加密|数据|算法 简介 首先简单介绍一下有关加密的背景.由于美国禁止几种密码算法的对外出口的加密位数(例如SSL的40位加密限制),本文将介绍一种ASP可以使用的简单字符加密算法,而不是那些受限制的加密算法.其实,这里介绍的加密算法对于一般的运用来说已经足够解密人麻烦一阵子的了.它的加密基础是最简单的Vernum密码方法,我将在下一篇文章中介绍这种密码. 它的基本原理是,需要有一个需要加密的 明文和一个随机生成的解密钥匙文件.然后使用这两个文件组合起来生成密文. (明文) 组合 (密钥) = 加

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

加密|数据|算法 在第一部分,讨论了如何生成密钥,下面将介绍如何使用这个密钥来加密和解密一个字符串. 下面的代码就是能够同时实现这个功能的函数 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 =

如何在asp.net保护文件

asp.net 如何在asp.net保护文件 简介如果我们做网站是用Access数据库作为数据源,则我们最关心的是Access数据库文件的安全问题.如果我们将存有重要信息(如密码.付款信息.个人私有的数据等等)的.mdb文件,放在Web服务器上可访问的目录中,任何一个人若猜到数据库文件名就可以通过浏览器或其他下载工具进行下载,这是非常危险的. 有许多方法对.mdb数据库文件进行保护,甚至任何一个你想保护的文件.最直接有效的方法是把.mdb数据库文件放在web服务器non-web accessib

在ASP中调用Excel画数据图表

excel|数据|图表 在ASP中调用Excel画数据图表,优势有很多,最突出的是可以输出多种形式的图形(总共有72种).以下是我写的一个通用ASP方法调用Excel画数据图表. <%'将数据图形化输出'dataArray二维数组'virtualFilePath输出图像文件名(虚拟路径)'nType显示类型Dim initTypeSub ExportPicture(dataArray,virtualFilePath,nType)Dim excelapp ' As New excel.Applic

巧用ASP技术保护DHTML源代码(转)

dhtml|源代码 巧用ASP技术保护DHTML源代码2001-8-18  动网先锋   DHTML使得我们能够开发出功能强大的Web应用客户端,它具有跨浏览器兼容.可交互和可移植等特点.它的缺点是用户能够直接查看JavaScript代码.本文介绍如何运用ASP技术保护DHTML代码,防止有人窃取你的DHTML代码. 传统保护技术 众所周知,Web本质上是一种不安全的媒介.当用户访问Web应用或者打开Web页面时,所有客户端的代码(HTML,JavaScript源文件以及CSS样式)一般都要下载

巧用ASP技术保护DHTML源代码

dhtml|源代码 DHTML使得我们能够开发出功能强大的Web应用客户端,它具有跨浏览器兼容.可交互和可移植等特点.它的缺点是用户能够直接查看JavaScript代码.本文介绍如何运用ASP技术保护DHTML代码,防止有人窃取你的DHTML代码. 传统保护技术 众所周知,Web本质上是一种不安全的媒介.当用户访问Web应用或者打开Web页面时,所有客户端的代码(HTML,JavaScript源文件以及CSS样式)一般都要下载到客户端缓冲区.用户只需点击一下"查看源文件"就可以查看.分

ASP.NET中实现DataGrid数据排序

asp.net|datagrid|排序|数据 Visual Studio .Net为编写WinForm程序(即:在Windows平台下运行的程序)所提供的DataGrid组件比起微软以往的各种开发环境中提供的DataGrid组件都要"高级"许多.其"高级"的地方就在于不需要再进行任何其他设置或编程,DataGrid就能够对其中的数据分别按照升.降序进行排列.这种"高级"功能给我们编程提供了许多方便.图01是在WinForm程序中的DataGrid