2020-02-22密码学

2020-02-23  本文已影响0人  Coke26

对称加密 —— AES DES

    明文数据 ——》密钥 ——》密文

    密文数据 ——》密钥 ——》明文

非对称加密 —— RSA (性能低)

    ——公钥加密,私钥解密

    ——私钥加密,公钥解密

密码:哈希(不可逆)

哈希:MD5 ;32位字符。

数据 —— HASH —— 密文(32位字符)

无限数据 ——> 实现的表现形式 (32位可以表现无限的数据大小)

一个或多个不同的数据 有相同的HASH值!(撞衫)(散列碰撞)

所以,HASH:用作密码的加密。


注册是如何完成的?

用户:手机号码:相同密码

客户端(HASH值) ——> HASH值

(eg:使用HASH值之后,找回密码 变成 重置密码,本地不再保存密码)

1.本地不允许明文保存用户密码!

2.网络不允许明文传输用户密码!

(注:浏览器使用对称加密,在用户允许下保存密码,安全系数较高)

指纹\人脸识别:是否可以代替密码?可以,前提条件:密码:证明账号是你的,指纹/人脸:证明手机是你的;

www.cmd5.com(md5查询网站);

//加盐:混合字符进行MD5处理

固定加盐:pwd= [pwd stringByAddendingString:@"dficvfj"].md5String;

//技术层面靠谱,业务层面不靠谱:技术人员知道盐,盐不可改,不够安全,多安全隐患;

//最好的盐:一个用户一个盐

//更好的方式 HMAC加密(也是哈希)

1.使用一个密钥加密,并且做两次散列

2.在实际开发中,密钥来自服务器

pwd= [pwd hmacMD5StringWithKey:@"来自服务器的key"];(一个账户一个key)

登录中,客户端-服务器加密流程

//问题:当一直传哈希密码的时候,可以获取登录权限?应用安全依然丢失;

//让哈希密码每次不一样

1.HMAC密码(32位)

2.(HMAC密码 + "时间戳").MD5   ————>服务器: 验证:HMAC密码 + "时间戳".MD5   验证失败  ————>  HMAC密码 + "时间戳-1分钟).MD5                  【ps.使用服务器给的时间戳】

ps.超时?使用 -你的网络不好?服务器繁忙。

//不要直接使用。系统库函数

1.很容易被下断点,符号断点
2.使用第三方或者打包一个库


//RSA算法(非对称) Https通讯原理

Http通讯概念

1.数据体量大 使用对称加密

2.对称加密的公钥 数据小 使用非对称加密 

1和2完成Https安全通讯

证书:服务器从私钥生成公钥,公钥对应的HASH值发给客户端,客户端通过hash验证公钥;


数字签名原理:

客户端签名逻辑

1.客户端:数据报文 ——》算出HASH值——》HASH值进行RSA加密 ——》报文和RSA加密参数一并发到服务器;

2.服务器:1.拿到报文——》一样的算法算出HASH值 ;2.RSA加密的HASH解密出来;对比1和2 是否相同;

ps.iOS系统的应用签名:双重数字签名;

MachO文件;

MachO知识非常重要!!!ios所有的可执行文件都是使用

1.应用的加载原理,启动优化,

2.DYLD

上一篇下一篇

猜你喜欢

热点阅读