iOS 密码学一

天大地大妈咪最大 提交于 2020-02-13 19:08:32

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 Desktop
cd 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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!