有关字符加密算法的问题!

2025-03-24 11:34:41
推荐回答(2个)
回答1:

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;
}

回答2:

这种算法其实就是杂凑算法(或者叫散列hash),有现成的16位md5,,你可以看看,再少的就不清楚了,对这些了解不是很多