/* ---------------------------------------------------------------- * 功 能:SINGLE_DES加密 * 输入参数:uszKey 加密密钥 * uszSrc 加密前数据 * 输出参数:uszDest 加密后数据 * 返 回 值: * 作 者: * 日 期: * 调用说明: * 修改日志:修改日期 修改者 修改内容简述 * ---------------------------------------------------------------- */ void DES(unsigned char *uszKey, unsigned char *uszSrc, unsigned char *uszDest) { char tmp[64]; expand0(uszKey,tmp); setkeystar((unsigned char*)tmp); encrypt0(uszSrc,uszDest); }
//_declspec(dllexport) // 此修饰符用于函数的原型声明即可 void DES(LPCSTR key, LPCSTR text,LPBYTE mtext) { char tmp[64]; int len; int i, j; char keytmp[10]; len = strlen(text); j = strlen(key); for(i = 0; i < 8; i++) { if( i < j ) keytmp[i] = key[i]; else keytmp[i] = 'x'; } keytmp[i] = '\0'; expand0(keytmp, tmp); setkeystar(tmp); i = len % 8; if( i != 0 ) { for(j = 0; j < i; j++) { mtext[j] = text[j] ^ (char)0xFF; } } for( ; i < len; i+= 8 ) { encrypt0((LPBYTE)&text[i], (LPBYTE)&mtext[i]); } mtext[len] = '\0'; }
void DES(unsigned char *key,unsigned char *text, unsigned char *mtext ) { char tmp[64]; expand0(key, tmp); setkeystar(tmp); encrypt0(text, mtext); }
void Des(unsigned char *key,unsigned char *text,unsigned char *mtext ) { unsigned char tmp[64]; unsigned char keybuf[9]; unsigned char textbuf[9]; unsigned char mtextbuf[9]; memset(keybuf,0,9); memset(textbuf,0,9); memset(mtextbuf,0,9); aschex_to_bcdhex11((char*)key,16,(char*)keybuf); aschex_to_bcdhex11((char*)text,16,(char*)textbuf); expand0(keybuf,tmp); setkeystar(tmp); encrypt0(textbuf,mtextbuf); bcdhex_to_aschex11((char*)mtextbuf,8,(char*)mtext); }
static int encrypt(lua_State *L) { //读取第一个参数 size_t bufferSize = 0; const char* buffer = lua_tolstring(L, 1, &bufferSize); size_t keySize = 0; const char* keys = lua_tolstring(L, 2, &keySize); //加密 byte* out = (byte *)malloc(bufferSize+1); int outSize = encrypt0((byte*)buffer, (int)bufferSize, (byte*)keys, (int)keySize, out, 0); out[outSize] = '\0'; //写入结束符 //返回数据 lua_pushfstring(L, (const char*)out); //释放内存 free(out); return 1; }