|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
void md5(unsigned char *dest, unsigned char *src)
{
int i;
MD5_CTX md5;
// 初始化
MD5Init(&md5);
// 传入明文字符串及其长度
MD5Update(&md5, src, strlen((char *)src));
// 得到加密后的字符串
MD5Final(&md5, dest);
}
疑惑如下:
1 上面的MD5_CTX是什么意思呀 没学过
2 初始化的MD5Init也不知道什么意思 没思路
让我用一个更简单的类比来解释这段代码。
假设有一个厨师,他有一个食谱(MD5算法)用来烹饪一道特殊的菜肴(加密数据)。
为了烹饪这道菜,厨师需要一个锅(MD5_CTX 结构体)来放原料、烹饪过程中的中间产物。
1、MD5_CTX 就像是一个锅,它用来装原料(明文数据)和过程中产生的中间物。这个锅里有一些格子(变量),用来存储烹饪过程中的数据。
2、MD5Init() 函数就像是清洗锅子的过程。在开始烹饪之前,厨师需要先清洗锅子,把里面的残渣去掉,为烹饪做好准备。
在这段代码中,md5() 函数就像是烹饪这道特殊菜肴的全过程。
首先,厨师会准备一个锅子(初始化 MD5_CTX 结构体),然后把原料(明文字符串)放进锅里。
接着,根据食谱(MD5算法)烹饪,最后从锅里拿出烹饪好的菜肴(密文),并放到你提供的盘子(dest缓冲区)上。
这样解释是否更容易理解呢?
|
|