程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> ASP技巧 >> Asp對字符串進行加密和解密代碼

Asp對字符串進行加密和解密代碼

編輯:ASP技巧

使用md5加密的缺點是不能進行解密,這是一個麻煩事。
現在我想實現的功能是:
給某網站一個地址,這個地址用來展示該網站在公司網站上發布的產品。如果直接使用http://www.aspprogram.cn/a.ASP?id=2來的話,客戶如果修改2為3後,這個客戶就轉為其他網站的客戶了,那這個網站損失了一個客戶,自己的宣傳就白宣傳了。
所以我想起來對這個2進行加密,以至於客戶不可以修改為3。
在網上找了兩天,終於找到。
< %
  dim   sBASE_64_CHARACTERS,varchar,varasc   
  dim   len1   
  dim   i   
  dim   m3   
    
  sBASE_64_CHARACTERS   =   "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"     
  sBASE_64_CHARACTERS   =   strUnicode2Ansi(sBASE_64_CHARACTERS)   
    
  Function strUnicodeLen(asContents)   
  '計算unicode字符串的Ansi編碼的長度   
  asContents1="a"&asContents   
  len1=len(asContents1)   
  k=0   
  for   i=1   to   len1   
  asc1=asc(mid(asContents1,i,1))   
  if   asc1<0   then   asc1=65536+asc1   
  if   asc1>255   then   
  k=k+2   
  else   
  k=k+1   
  end   if   
  next   
  strUnicodeLen=k-1   
  End   Function   
    
  Function  strUnicode2Ansi(asContents)   
  '將Unicode編碼的字符串,轉換成Ansi編碼的字符串   
  strUnicode2Ansi=""   
  len1=len(asContents)   
  for   i=1   to   len1   
  varchar=mid(asContents,i,1)   
  varasc=asc(varchar)   
  if   varasc<0   then   varasc=varasc+65536   
  if   varasc>255   then   
  varHex=Hex(varasc)   
  varlow=left(varHex,2)   
  varhigh=right(varHex,2)   
  strUnicode2Ansi=strUnicode2Ansi   &   chrb("&H"   &   varlow   )   &   chrb("&H"   &   varhigh   )   
  else   
  strUnicode2Ansi=strUnicode2Ansi   &   chrb(varasc)   
  end   if   
  next   
  End   function   
    
  Function   strAnsi2Unicode(asContents)   
  '將Ansi編碼的字符串,轉換成Unicode編碼的字符串   
  strAnsi2Unicode   =   ""   
  len1=lenb(asContents)   
  if   len1=0   then   exit   function   
  for   i=1   to   len1   
  varchar=midb(asContents,i,1)   
  varasc=ascb(varchar)   
  if   varasc   >   127   then     
  strAnsi2Unicode   =   strAnsi2Unicode   &   chr(ascw(midb(asContents,i+1,1)   &   varchar))   
  i=i+1   
  else   
  strAnsi2Unicode   =   strAnsi2Unicode   &   chr(varasc)   
  end   if   
  next   
  End   function   
    
  Function   Base64encode(asContents)     
  '將Ansi編碼的字符串進行Base64編碼   
  'asContents應當是ANSI編碼的字符串(二進制的字符串也可以)   
  Dim   lnPosition     
  Dim   lsResult     
  Dim   Char1     
  Dim   Char2     
  Dim   Char3     
  Dim   Char4     
  Dim   Byte1     
  Dim   Byte2     
  Dim   Byte3     
  Dim   SaveBits1     
  Dim   SaveBits2     
  Dim   lsGroupBinary     
  Dim   lsGroup64     
  Dim   m4,len1,len2   
    
  len1=Lenb(asContents)   
  if   len1<1   then     
  Base64encode=""   
  exit   Function   
  end   if   
    
  m3=Len1   Mod   3     
  If   M3   >   0   Then   asContents   =   asContents   &   String(3-M3,   chrb(0))     
    
  IF   m3   >   0   THEN     
  len1=len1+(3-m3)   
  len2=len1-3   
  else   
  len2=len1   
  end   if   
    
  lsResult   =   ""     
    
  For   lnPosition   =   1   To   len2   Step   3     
  lsGroup64   =   ""     
  lsGroupBinary   =   Midb(asContents,   lnPosition,   3)     
    
  Byte1   =   Ascb(Midb(lsGroupBinary,   1,   1)):   SaveBits1   =   Byte1   And   3    
  Byte2   =   Ascb(Midb(lsGroupBinary,   2,   1)):   SaveBits2   =   Byte2   And   15     
  Byte3   =   Ascb(Midb(lsGroupBinary,   3,   1))     
    
  Char1   =   Midb(sBASE_64_CHARACTERS,   ((Byte1   And   252)   \   4)   +   1,   1)     
  Char2   =   Midb(sBASE_64_CHARACTERS,   (((Byte2   And   240)   \   16)   Or   (SaveBits1   *   16)   And   &HFF)   +   1,   1)     
  Char3   =   Midb(sBASE_64_CHARACTERS,   (((Byte3   And   192)   \   64)   Or   (SaveBits2   *   4)   And   &HFF)   +   1,   1)     
  Char4   =   Midb(sBASE_64_CHARACTERS,   (Byte3   And   63)   +   1,   1)     
  lsGroup64   =   Char1   &   Char2   &   Char3   &   Char4     
    
  lsResult   =   lsResult   &   lsGroup64     
  Next     
    
  if   M3   >   0   then   
  lsGroup64   =   ""     
  lsGroupBinary   =   Midb(asContents,   len2+1,   3)     
    
  Byte1   =   Ascb(Midb(lsGroupBinary,   1,   1)):   SaveBits1   =   Byte1   And   3    
  Byte2   =   Ascb(Midb(lsGroupBinary,   2,   1)):   SaveBits2   =   Byte2   And   15     
  Byte3   =   Ascb(Midb(lsGroupBinary,   3,   1))     
    
  Char1   =   Midb(sBASE_64_CHARACTERS,   ((Byte1   And   252)   \   4)   +   1,   1)     
  Char2   =   Midb(sBASE_64_CHARACTERS,   (((Byte2   And   240)   \   16)   Or   (SaveBits1   *   16)   And   &HFF)   +   1,   1)     
  Char3   =   Midb(sBASE_64_CHARACTERS,   (((Byte3   And   192)   \   64)   Or   (SaveBits2   *   4)   And   &HFF)   +   1,   1)     
    
  if   M3=1   then   
  lsGroup64   =   Char1   &   Char2   &   ChrB(61)   &   ChrB(61)     
  else   
  lsGroup64   =   Char1   &   Char2   &   Char3   &   ChrB(61)     
  end   if   
    
  lsResult   =   lsResult   &   lsGroup64     
  end   if   
    
  Base64encode   =   lsResult     
    
  End   Function     
    
    
  Function   Base64decode(asContents)     
  '將Base64編碼字符串轉換成Ansi編碼的字符串   
  'asContents應當也是ANSI編碼的字符串(二進制的字符串也可以)   
  Dim   lsResult     
  Dim   lnPosition     
  Dim   lsGroup64,   lsGroupBinary     
  Dim   Char1,   Char2,   Char3,   Char4     
  Dim   Byte1,   Byte2,   Byte3     
  Dim   M4,len1,len2   
    
  len1=   Lenb(asContents)     
  M4   =   len1   Mod   4   
    
  if   len1   <   1   or   M4   >   0   then   
  Base64decode   =   ""     
  exit   Function     
  end   if   
    
  if   midb(asContents,   len1,   1)   =   chrb(61)   then   m4=3     
  if   midb(asContents,   len1-1,   1)   =   chrb(61)   then   m4=2   
    
  if   m4   =   0   then   
  len2=len1   
  else   
  len2=len1-4   
  end   if   
    
  For   lnPosition   =   1   To   Len2   Step   4     
  lsGroupBinary   =   ""     
  lsGroup64   =   Midb(asContents,   lnPosition,   4)     
  Char1   =   InStrb(sBASE_64_CHARACTERS,   Midb(lsGroup64,   1,   1))   -   1     
  Char2   =   InStrb(sBASE_64_CHARACTERS,   Midb(lsGroup64,   2,   1))   -   1     
  Char3   =   InStrb(sBASE_64_CHARACTERS,   Midb(lsGroup64,   3,   1))   -   1     
  Char4   =   InStrb(sBASE_64_CHARACTERS,   Midb(lsGroup64,   4,   1))   -   1     
  Byte1   =   Chrb(((Char2   And   48)   \   16)   Or   (Char1   *   4)   And   &HFF)     
  Byte2   =   lsGroupBinary   &   Chrb(((Char3   And   60)   \   4)   Or   (Char2   *   16)   And   &HFF)     
  Byte3   =   Chrb((((Char3   And   3)   *   64)   And   &HFF)   Or   (Char4   And   63))     
  lsGroupBinary   =   Byte1   &   Byte2   &   Byte3     
    
  lsResult   =   lsResult   &   lsGroupBinary     
  Next     
    
  '處理最後剩余的幾個字符   
  if   M4   >   0   then     
  lsGroupBinary   =   ""     
  lsGroup64   =   Midb(asContents,   len2+1,   m4)   &   chrB(65)   'chr(65)=A,轉換成值為0   
  if   M4=2   then   '補足4位,是為了便於計算     
  lsGroup64   =   lsGroup64   &   chrB(65)     
  end   if   
  Char1   =   InStrb(sBASE_64_CHARACTERS,   Midb(lsGroup64,   1,   1))   -   1     
  Char2   =   InStrb(sBASE_64_CHARACTERS,   Midb(lsGroup64,   2,   1))   -   1     
  Char3   =   InStrb(sBASE_64_CHARACTERS,   Midb(lsGroup64,   3,   1))   -   1     
  Char4   =   InStrb(sBASE_64_CHARACTERS,   Midb(lsGroup64,   4,   1))   -   1     
  Byte1   =   Chrb(((Char2   And   48)   \   16)   Or   (Char1   *   4)   And   &HFF)     
  Byte2   =   lsGroupBinary   &   Chrb(((Char3   And   60)   \   4)   Or   (Char2   *   16)   And   &HFF)     
  Byte3   =   Chrb((((Char3   And   3)   *   64)   And   &HFF)   Or   (Char4   And   63))     
    
  if   M4=2   then   
  lsGroupBinary   =   Byte1   
  elseif   M4=3   then   
  lsGroupBinary   =   Byte1   &   Byte2   
  end   if   
    
  lsResult   =   lsResult   &   lsGroupBinary     
  end   if   
    
  Base64decode   =   lsResult     
    
  End   Function     
    
  '=============================================   
  Function   Encode(passwd)   
      Encode=strAnsi2Unicode(Base64encode(strUnicode2Ansi(passwd)))   
  End   Function   
    
  Function   Decode(passwd)   
      Decode=strAnsi2Unicode(Base64decode(strUnicode2Ansi(passwd)))   
  End   Function  

 

  '************************舉例開始**************************
  key="ASPprogram.cn-1"
  response.write "key="&key&"<br>"
  m=encode(key)  
  response.write "加密得到:"&m&"<br>"
  n=decode(m)
  response.write "解密得到:"&n&"<br>"
  '************************舉例結束**************************

% >

將上面代碼保存為ASP文件,運行一下即可

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved