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