你的位置:首页 > 新闻动态 > 公司新闻

用Asp写个加密和解密的类

2012.05.21      点击:
用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=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz09+/endsub

  ********************************************

  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
 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 &tempStringnext

  *************************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


  ******************************begin

  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=center(center(paramString,4),mod4String)

  returnValue = returnValue & tempString

  end if

  Decode=returnValue

  end if

  end if

  end function

  ********************************************

  end将Base64编码字符串转换成Ansi编码的字符串