MD5不是加密用的.
当对一个串进行MD5的时候,最后得到的总是一个定长的数据块(32字节),
而且不能通过计算后的数据解密得到原始数据.
所以不可能给你想要的结果.
真正的加密算法是可以加密任何长度的数据,
因为最后解密要还原最初的数据,既不能多也不能少.
所以你可以找任何一个加密算法都可以,比如DES , RSA.
如果愿意, 你也可以定义自己的加密算法.
比如:
#define M_LEN 12 // 分组长度为12的加密解密算法
// 加密,解密函数
void encrypt(char* data, int nLen, const char key[M_LEN])
{
// 简单通过按字节xor加密
for(int i=0; i{
data[i] ^= key[i%M_LEN];
}
}
int main()
{
char data[] = "abcdefghijklmnopqrstuvwxyz";
int dataLen = strlen(data);
const char* key = "njagrdijmdff"; // 字符数量等于 M_LEN
encrypt(data, dataLen, key); // 加密
// 此时data变成加密后的数据, 和原来数据等长
encrypt(data, dataLen, key); // 解密, 在这个简单加密解密算法里, 加密和解密的函数是用同一个
// 此时data还原为原来的数据
printf("%s", data);
return 0;
}
这种算法其实就是杂凑算法(或者叫散列hash),有现成的16位md5,,你可以看看,再少的就不清楚了,对这些了解不是很多