用asp寫個簡單的加密和解密的類

來源:互聯網
上載者:User
加密|解密

  用asp寫個簡單的加密和解密的類,在這個類中簡單的實現了一個加密和解密。目的是和大家分享一下。這個類的破解非常簡單。看看我的注釋就知道是怎麼回事了。下次編寫一個java的加密和解密的類。
  


  class Base64Class
  rem Const
  dim sBASE_64_CHARACTERS'轉化碼
  dim lenString '計算字串的長度
  dim iCount '計數器
  dim returnValue '傳回值
  dim tempChar'緩衝字元
  dim tempString'緩衝字串
  dim paramString '參數字串
  dim temHex'緩衝緩衝十六進位
  dim tempLow'緩衝低位
  dim tempHigh'緩衝高位
  dim mod3String'
  dim mod4String'
  dim tempBinary'
  dim tempByteOne'
  dim tempByteTwo'
  dim tempByteThree'
  dim tempByteFour'
  dim tempSaveBitsOne'
  dim tempSaveBitsTwo'
  '********************************************
  'begin初始化類
  '********************************************
  private sub Class_Initialize()
  sBASE_64_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" end sub
  '********************************************
  'end初始化類 '
  ********************************************

  '********************************************
  'begin銷毀類
  '********************************************
  Private Sub Class_Terminate()
  sBASE_64_CHARACTERS="" end sub
  '********************************************
  'end銷毀類
  '********************************************

  '********************************************
  'begin將Ansi編碼的字串進行Base64編碼
  '********************************************
  public function Encode(paramString)
  tempString=""
  returnValue=""
  lenString=len(paramString)
  if lenString<1 then
  Encode=returnValue
  else
  mod3String=lenString mod 3
  '補足位元是為了便於計算
  if mod3String>0 then
  lenString=lenString+3-mod3String
  lenString=lenString-3
  end if



  '*************************begin
  for iCount=1 to lenString step 3
  tempBinary = Mid(paramString, iCount, 3)
  'response.write tempBinary
  tempByteOne= Asc(Mid(tempBinary, 1, 1)): tempSaveBitsOne = tempByteOne And 3
  tempByteTwo = Asc(Mid(tempBinary, 2, 1)): tempSaveBitsTwo = tempByteTwo And 15
  tempChar = Asc(Mid(tempBinary, 3, 1))
  tempByteOne = Mid(sBASE_64_CHARACTERS, ((tempByteOne And 252) \ 4) + 1, 1)
  tempByteTwo = Mid(sBASE_64_CHARACTERS, (((tempByteTwo And 240) \ 16) Or (tempSaveBitsOne * 16) And &HFF) + 1, 1)
  tempByteThree = Mid(sBASE_64_CHARACTERS, (((tempChar And 192) \ 64) Or (tempSaveBitsTwo * 4) And &HFF) + 1, 1)
  tempByteFour = Mid(sBASE_64_CHARACTERS, (tempChar And 63) + 1, 1)
  tempString = tempByteOne & tempByteTwo & tempByteThree & tempByteFour returnValue=returnValue & tempString next
  '*************************end
  '*************************begin處理最後剩餘的幾個字元
  if mod3String>0 then
  tempBinary = Mid(paramString, iCount, mod3String)
  if mod3String=1 then
  tempString = tempBinary & Chr(64) & Chr(64) & Chr(64) '用@號補足位元
  else tempString = tempBinary & Chr(64) & Chr(64) '用@號補足位元
  end if
  returnValue=returnValue & tempString
  end if
  '*************************end處理最後剩餘的幾個字元
  Encode=returnValue end if end function
  '********************************************
  'end將Ansi編碼的字串進行Base64編碼
  '********************************************

  '********************************************
  'end將Base64編碼字串轉換成Ansi編碼的字串
  '********************************************
  public function Decode(paramString)
  tempString=""
  returnValue=""
  lenString=len(paramString)
  if lenString<1 then
  Decode=returnValue
  else
  mod4String=lenString mod 4
  if mod4String >0 then '字串長度應當是4的倍數
  Decode=returnValue
  else 'begin判斷是不是@號
  if Mid(paramString, lenString-1, 1) = "@" then
  mod4String=2
  end if
  if Mid(paramString, lenString-2, 1) = "@" then
  mod4String=1
  end if
  'end判斷是不是@號
  if mod4String>0 then
  lenString=lenString-4
  end if



  for iCount=1 to lenString step 4
  tempString = Mid(paramString, iCount, 4)
  tempByteOne = InStr(sBASE_64_CHARACTERS, Mid(tempString, 1, 1)) - 1
  tempByteTwo = InStr(sBASE_64_CHARACTERS, Mid(tempString, 2, 1)) - 1
  tempByteThree = InStr(sBASE_64_CHARACTERS, Mid(tempString, 3, 1)) - 1
  tempByteFour = InStr(sBASE_64_CHARACTERS, Mid(tempString, 4, 1)) - 1
  tempByteOne = Chr(((tempByteTwo And 48) \ 16) Or (tempByteOne * 4) And &HFF) tempByteTwo = "" & Chr(((tempByteThree And 60) \ 4) Or (tempByteTwo * 16) And &HFF)
  tempByteThree = Chr((((tempByteThree And 3) * 64) And &HFF) Or (tempByteFour And 63))
  tempString=tempByteOne & tempByteTwo & tempByteThree
  returnValue=returnValue & tempString
  next
  '******************************end

  '處理最後剩餘的幾個字元
  if mod4String > 0 then
  tempString=left(right(paramString,4),mod4String)
  returnValue = returnValue & tempString
  end if
  Decode=returnValue
  end if
  end if
  end function
  '********************************************
  'end將Base64編碼字串轉換成Ansi編碼的字串
  '********************************************

  end class



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。