70,020
社区成员




#if defined(__x86_64__) || (defined(__sparc__) && defined(__arch64__)) || (defined(_MSC_VER) && defined(_M_X64))
typedef unsigned int ulong32;
#else
typedef unsigned long ulong32;
#endif
int hsEncrypt(const char *key,const char *s1,char *s2)
{
unsigned char key2[16],tmp1[16],tmp2[16];
char tmpKey[16];
int i;
if(strlen(s1)>16)
return -1;
if(strlen(key)>15)
return -1;
//分配内存
memset(tmpKey, 0, sizeof(tmpKey));
//复制数据
memcpy(tmpKey, key, strlen(key));
//输入密码password ,double数字类型
//生成16byte随机密钥 ,给下面的函数使用
make2key(tmpKey,key2);
// hexkey[16] MODE
// 十六进制的key,mode=
des2key(key2,0);
//复制数据
memset(tmp1, 0, sizeof(tmp1));
memcpy(tmp1, s1, strlen(s1));
//根据寄存器里面的key值,进行加密,或者解密
D2des(tmp1,(unsigned char *)tmp2);
//奇数偶数,分别填充到32位的char中
for (i=0; i<16;i++)
{
//存整数
s2[i*2] = tmp2[i]/16 +( (tmp2[i]/16>=10)?'A'-10:'0' );
//存余数,
s2[i*2+1] = tmp2[i]%16 +( (tmp2[i]%16>=10)?'A'-10:'0' );
}
s2[32]='\0';
return 0;
}