110,536
社区成员
发帖
与我相关
我的任务
分享
extern "C" _declspec(dllexport) CString _des(LPCTSTR key, LPCTSTR data, LPCTSTR mode);
CString _des(LPCTSTR key, LPCTSTR data, LPCTSTR mode) {
unsigned char tmpbuf[300];
unsigned char tmpstr[601];
unsigned char keyBuf[32];
int dataLen = strlen(data);
dataLen = hexStrToHexBuf(data, dataLen, tmpstr);
if(dataLen % 8 != 0) {
return _T("");
}
int keyLen = strlen(key);
if(keyLen < 16) {
return _T("");
}
keyLen = hexStrToHexBuf(key, keyLen, keyBuf);
char deOrEn = 0;
if(strcmp(mode, "0") == 0 || strcmp(mode, "00") == 0) { //加密
deOrEn = 1;
} else { //
deOrEn = 0;
}
if(keyLen == 8) { // des
desEcb(keyBuf, tmpstr, dataLen, tmpbuf, deOrEn);
} else {
tripDesEcb(keyBuf, keyLen, tmpstr, dataLen, tmpbuf, deOrEn);
}
int rLen = hexBufToHexStr(tmpbuf, dataLen, (char *)tmpstr);
tmpstr[rLen] = '\0';
CString result = (CString)tmpstr;
return result;
}
[DllImport("dllTest.dll", EntryPoint = "_des", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public static extern string _des(StringBuilder key, StringBuilder data, StringBuilder mode);
StringBuilder mk_mf = new StringBuilder("00000000000000000000000000000000");
StringBuilder random = new StringBuilder("0000000000000000");
StringBuilder type = new StringBuilder("0");
string strResult = _des(mk_mf, random, type);
int GetWindowText(
HWND hWnd, // handle to window or control
LPTSTR lpString, // text buffer
int nMaxCount // maximum number of characters to copy);
int GetClassName(
HWND hWnd, // handle to window
LPTSTR lpClassName, // class name
int nMaxCount // size of class name buffer);