base64.h编码头文件用的这个直接复制的:http://www.coolib.cn/show.asp?i=5513699&p=22然后想借用这个头文件处理加密解密,接口定义为:interfaceICrypto:IDispatch{[id(1),helpstring(...
base64.h编码头文件用的这个直接复制的:http://www.coolib.cn/show.asp?i=5513699&p=22
然后想借用这个头文件处理加密解密,接口定义为:
interface ICrypto : IDispatch
{
[id(1), helpstring("method encrypt")] HRESULT encrypt([in] BSTR bstrPlainText, [in] BSTR bstrPassword, [out, retval] BSTR *vCipherText);
[id(2), helpstring("method decrypt")] HRESULT decrypt([in] BSTR vCipherText, [in] BSTR bstrPassword, [out, retval] BSTR *bstrPlainText);
};
接口实现:
STDMETHODIMP CCrypto::encrypt(BSTR bstrPlainText, BSTR bstrPassword, BSTR *vCipherText)
{
// TODO: Add your implementation code here
_bstr_t b = bstrPlainText;
char* Text = b;
char m_strUserName[255];
Base64_Encode(Text, m_strUserName, strlen(Text));
*vCipherText = CComBSTR(m_strUserName);
return S_OK;
}
STDMETHODIMP CCrypto::decrypt(BSTR vCipherText, BSTR bstrPassword, BSTR *bstrPlainText)
{
// TODO: Add your implementation code here
char m_strUserName[255];
_bstr_t b = vCipherText;
char* Text = b;
Base64_Decode(Text, m_strUserName, strlen(Text));
*bstrPlainText = CComBSTR(m_strUserName);
return S_OK;
}
ASP调用测试:
Set mDll = Server.CreateObject("CryptoProj.Crypto")
Dim a
a = mDll.encrypt("test des plaintext!","DFlt4DF")
REsponse.Write(a)
b = mDll.decrypt(a,"DFlt4DF")
REsponse.Write(b)
%>
输出为:dGVzdCBkZXMgcGxhaW50ZXh0IQ==test des plaintext!烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫锑?nQ_w?硗
为什么会有一串乱码呢?前面是对的,要怎么改才是正确的输出呢?
展开