1. BASE64
1.为什么要使用BASE64编码?
从编码方式上可以看出,Base64并不是一种真正意义上的加密算法,但经过编码也使得信息有了初级的加密效果。
之所以使用Base64编码是因为在一些系统中只能使用ASCII字符,计算机ascii码的128~255之间的值是不可见字符。为了使得信息在不同设备上能够正常显示,把数据先做一个Base64编码,统统变成可见字符,这样出错的可能性就大大降低了。Base64特别适合在http,mime协议下快速传输数据。
参考链接:
一篇文章彻底弄懂Base64编码原理
在线工具:Base64加密、解密 - 站长工具
2. C语言实现
2. MD5
2.1. 主要特点
1、长度固定。128bit的二进制数据,与原始数据长短无关。通常以16进制形式表示,即128/4=32
2、确定性。一个原始数据的MD5值是唯一的。
3、碰撞性。有可能多个原始数据计算出来的MD5值是一样的。
4、不可逆性。无法通过MD5值还原出原始数据。可参考第三点。
2.2. C语言实现
代码贴在前面:MD5算法C语言实现:亲测可用,感谢博主。
从测试代码main.c中可以看出,实际调用了三个函数即可:
//初始化核心变量,装入标准的幻数
int MD5_Init(MD5_CTX *c);
// 循环调用此函数,可以将不同的数据加在一起计算MD5,成功返回1,失败返回0
int MD5_Update(MD5_CTX *c, const void *data, size_t len);
// 输出MD5结果数据,成功返回1,失败返回0
int MD5_Final(unsigned char *md, MD5_CTX *c);
MD5算法步骤详解:文末有验证示例。
代码注释:md5加密算法c实现,七分注释
在线工具:MD5在线加密 - 站长工具
MD5算法 - 知乎
算法:MD5算法原理说明
漫画趣解MD5算法
MD5算法详解
MD5_百度百科