%
Class ClassCryptoAES
'Useage:
'Dim cls
'Set cls=new ClassCryptoAES
'cls.EncodingAESKey="eX8nNDRGOPHfdoeY1nDdnx6qEc5pqWi2eGTx2eD2V8n"
'cls.Encode("TargetString")
'cls.Decode("TargetString")
Private cfgAESKey
Private cfgEncodingAESKey
Private m_ClassBase64Encode
Private m_objRijndaelManaged
Private m_objUTF8Encoding
Private m_enc
Private m_dec
Private Sub Class_Initialize
'Set m_ClassBase64Encode=new ClassBase64Encode
Set m_ClassBase64Encode=new CBase64
Set m_objRijndaelManaged=server.CreateObject("System.Security.Cryptography.RijndaelManaged")
Set m_objUTF8Encoding=server.CreateObject("System.Text.UTF8Encoding")
End Sub
Private Sub Class_Terminate()
set m_enc= Nothing
set m_dec= Nothing
Set m_ClassBase64Encode=Nothing
Set m_objRijndaelManaged=Nothing
Set m_objUTF8Encoding=Nothing
End Sub
Public Property Let EncodingAESKey(ByVal field)
cfgEncodingAESKey = field
'cfgAESKey=m_ClassBase64Encode.Decode64(cfgEncodingAESKey + "=")
cfgAESKey=m_ClassBase64Encode.DecodeText(cfgEncodingAESKey + "=")
Call SetCryptoIVandKey()
End Property
Public Property Get EncodingAESKey
EncodingAESKey = cfgEncodingAESKey
End Property
Public Function Encode(s)
Dim bytes
bytes=m_objUTF8Encoding.GetBytes_4(s)
bytec=m_enc.TransformFinalBlock((bytes),0,lenb(bytes))
'Encode=m_objUTF8Encoding.GetString((bytec))
Encode=Bytes2Str(bytec,"unicode")
End Function
Private Sub toString(arr)
response.Write( Bytes2BSTR(arr) & "
")
End Sub
Public Function Decode(s)
Dim bytec,byted
'bytec=m_objUTF8Encoding.GetBytes_4(s)
'bytec=Str2Bytes(m_ClassBase64Encode.Decode64(s),"unicode")
bytec=Str2Bytes(s,"unicode")
'toString(bytec)
byted=m_dec.TransformFinalBlock((bytec),0,lenb(bytec))
'toString(byted)
Decode=m_objUTF8Encoding.GetString((byted))
End Function
Private Sub SetCryptoIVandKey()
'Set IV and key
m_objRijndaelManaged.IV=GetBytes(cfgAESKey,0,16)
m_objRijndaelManaged.key=GetBytes(cfgAESKey,0,32)
set m_enc= m_objRijndaelManaged.CreateEncryptor()
set m_dec= m_objRijndaelManaged.CreateDecryptor()
End Sub
Public Function GetBytes(byval str,istart,iLen)
Dim ms,strRet
Set ms = CreateObject("ADODB.Stream")
ms.Type = 2
ms.Charset = "utf-8"
ms.Open
ms.WriteText str
ms.Position = 0
ms.Type = 1
ms.Position = istart+3
vout = ms.Read(iLen)
ms.close
Set ms = nothing
GetBytes = vout
End Function
Function Bytes2BSTR(vin)
Bytes2BSTR = Bytes2Str(vin,"utf-8")
End Function
Public Function Bytes2Str(vin,charset)
Dim ms,strRet
Set ms = Server.CreateObject("ADODB.Stream") '建立流对象
ms.Type = 1 ' Binary
ms.Open
ms.Write vin '把vin写入流对象中
ms.Position = 0 '设置流对象的起始位置是0 以设置Charset属性
ms.Type = 2 'Text
ms.Charset = charset '设置流对象的编码方式为 charset
strRet = ms.ReadText '取字符流
ms.close '关闭流对象
Set ms = nothing
Bytes2Str = strRet
End Function
Public Function Str2Bytes(str,charset)
Dim ms,strRet
Set ms = CreateObject("ADODB.Stream") '建立流对象
ms.Type = 2 ' Text
ms.Charset = charset '设置流对象的编码方式为 charset
ms.Open
ms.WriteText str '把str写入流对象中
ms.Position = 0 '设置流对象的起始位置是0 以设置Charset属性
ms.Type = 1 'Binary
ms.Position = 2 '跳过0-1字节,不同的charset需跳过的位置不同
vout = ms.Read(ms.Size) '取字符流
ms.close '关闭流对象
Set ms = nothing
Str2Bytes = vout
End Function
Public Function toBase64(s)
'toBase64=m_ClassBase64Encode.Encode64(s)
toBase64=m_ClassBase64Encode.EncodeText(s)
End Function
Public Function FromBase64(s)
'FromBase64=m_ClassBase64Encode.Decode64(s)
FromBase64=m_ClassBase64Encode.DecodeText(s)
End Function
End Class
%>