为什么要使用 Base64 ?
Base64 虽然可以用于简单的加密,但通常用于传输数据。
在网络上交换数据时,比如说从 A 地传到 B 地,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一些不同,这样那些不可见字符就有可能被处理错误,这是不利于传输的。把数据先做一个 Base64 编码,统统变成可见字符,这样出错的可能性就大降低了。很多场景下的数据传输要求数据只能由简单通用的字符组成,比如 HTTP 协议要求请求的首行和请求头都必须是 ASCII 编码。
为什么要使用 MD5 ?
MD5 就是用来加密数据(MD5 并不是一种加密算法,而是一种摘要算法,我们也可以叫它哈希函数),且不可逆,即只用暴力碰撞来解密,当时它已经不是一个安全的加密算法了。
使用 MD5 加密数据的目的通常是为了验证数据的完整性。因为哈希算法具有一致性,所以如果数据没有被篡改,我们可以把它的哈希值与原来的哈希值进行比较,如果完全一致,则说明数据没有被篡改。但是,由于哈希算法是单向的,所以我们无法通过哈希值推出原来的数据。如果你需要获取原来的数据,你必须要拥有原来的数据本身。
Qt 中使用 Base64
1 |
|
Qt 中使用 MD5
1 |
|
MD5 既然不安全,那么 Qt 中可以使用的加密算法还有很多,主要通过 QCryptographicHash
和 QCA
(Qt Cryptographic Architecture)库来实现。在任何场景下,我们都应该避免 MD5 的使用,可以选择更好的摘要算法替代 MD5,例如 SHA256、SHA512。
尽管摘要算法无论如何都不安全,因为会被碰撞出来。哈希加盐的方式确实能够增加攻击者的成本,但这远远不够,随着计算机算力的增强已经难以抵挡。使用 bcrypt
相比于直接使用哈希加盐是一种更加安全的方式,也是我们目前推荐使用的方法,为了增加攻击者的成本,bcrypt
引入了计算成本这一可以调节的参数,能够调节执行 bcrypt
函数的成本。
参考链接:
https://xiaoyangst.github.io/2024/09/01/Base64-%E5%92%8C-MD5-%E7%9A%84%E4%BD%BF%E7%94%A8/
https://blog.csdn.net/weixin_35749545/article/details/129072384
https://blog.51cto.com/yang/2894100