MD5加盐和HMAC
123+一堆乱七八糟的东西,前后中间随便加,让别人无法直接破解123
盐的不足之处:1.这个盐是固定的,只要是开发者都得知道这个盐(iOS端,Android端,服务器端)如果泄漏出去就能破戒掉。
2.盐写死了,1.0写入已经对密码加密了,2.0版本如果要改,就不能改了。
HMAC:使用广泛,给定一个密钥,做明文和密钥的拼接,然后做2次MD5的计算。
加密部分
加密算法
—Hash 散列函数。是不可逆的
加密算法不应该都是不可逆的。
- 以下两种算法是可逆的
1.对称加密 传统的加密算法
加密和解密都使用一个密钥。密钥的保密工作非常重要。
2.非对称加密RSA(现代加密算法)
有公钥和私钥:1.用公钥加密,私钥解密。2.用私钥加密,公钥解密
明文>加密-密文
密文>解密-明文
一个故事讲完https
A和B网络聊天,相隔很远,有一天他们突然发现,他们一直是在明文聊天,相当于在网上裸奔,如果任何一个不怀好意的人,都可以监听他们的聊天内容,打开他们传输的数据包,窥探他们的隐私。
A和B就商量做一个数据加密!
逻辑是:发送信息之前,加密;B收到的时候进行解密。
这时对称加密。问题就来了,他们需要先约定一个密钥,约定密钥的过程也会被监听。
所以之后就出现了非对称的加密。A有一个公钥和私钥,B也有一个公钥和私钥。监听者拿到我的私钥不知道公钥是多少,拿到公钥不知道私钥是多少。如下:
实现几次后,发现RSA有点慢。所以约定,非对称+对称加密。第一次非对称方式把密钥发送过去,其他消息用对称加密方式发过去。
优点:既解决了密钥的传送问题,又解决了RSA传输速度慢的问题。
疑问:如果A发送公钥给B的时候,有个中间人C截获了这个公钥,然后冒充A将一个伪装的假的公钥发给B。这时候B就会把中间人C当成A。
这时候就约定,需要一个数字证书,即把公钥和个人信息用Hash算法生成(不可逆)
对称加密的经典算法
- DES数据加密标准
- 3DES(使用3个密钥,对相同的数据加密3次,争强加密强度)
- AES 高级加密标准(美国国家安全局就用的这个,苹果的钥匙串访问也是使用的AES)
2种加密的方式
ECB:将每一个数据块单独加密,最后再拼接。解密也是同样的道理,先拆分数据块,独立解密。但是只要截获了其中某一块如果解密成功,那么整个信息就会暴露。
CBC:加密每一个数据块,都会与上一个数据块之间有联系;密码块链,使用密钥和一个向量对数据执行加密转换,能够保证密文的完整性,如果一个数据改变了,后面的数据都会造成破坏。
终端操作加密的命令
cd Desktopcd Desktop
显示该目录下的内容:
ls
创建名为加密的文件夹
mkdir 加密
编辑abc.txt,没有则创建
vim abc.txt
显示abc.txt的内容
more abc.txt
des加密,ECB方式。K:密钥 nosalt:不加盐
xiexin$ openssl enc -des-ecb -K 616263 -nosalt -in abc.txt -out msg1.bin
显示加密后的msg1.bin内容
xxd msg1.bin
des加密,CBC方式。iv:向量
openssl enc -des-cbc -iv 01020304050607080 -K 616263 -nosalt -in abc.txt -out msg4.bin
来源:CSDN
作者:煮酒Shae
链接:https://blog.csdn.net/qq_27597629/article/details/104296197