VC中加密问题
有一个字符串,要经过加密算法形成一个序列号,然后当输入字符串时,经过解密算法还原成原来的字符串,只有当输入的字符串等于序列号时,才完成解密。
我在网上下了个MD5加密类
void MD5Init ();
void MD5Transform (unsigned long int state[4], unsigned char block[64]);
void MD5_memcpy (unsigned char* output, unsigned char* input,unsigned int len);
void Encode (unsigned char *output, unsigned long int *input,unsigned int len);
void Decode (unsigned long int *output, unsigned char *input, unsigned int len);
void MD5_memset (unsigned char* output,int value,unsigned int len);
我这样使用,却输出不正确:
unsigned long int inData[12];
inData[0] = 'a';inData[1] = '1';inData[2] = 'b';inData[3] = '2';inData[4] = 'c';
inData[5] = '3';inData[6] = 'd';inData[7] = '4';inData[8] = '3';inData[9] = '5';
inData[10] = '3';inData[11] = '6';
unsigned char outData[512];
md.Encode ( outData, inData, 12 );(md为MD5类的对象)
可是OutData只有一个字符,是'a'.
有两个问题:
1,MD5好象是不可逆变换.由于它不可逆,是不是指字符串经过加密形成系列号,序列号经过解密却不能得到原来的字符串呢?
2,如果1不成立,这个类可以完成我的要求,那么根据我刚开始提出的要求,该如何依次调用这个类中的函数呢?
[解决办法]
MD5 是不可逆算法 加密过后,不能再还原成原来的字符串
可以考虑用其他算法 比如DES , Triple DES, RSA 等等
[解决办法]
我封装过一个,是不是你这个类有问题,