美文网首页
2020-02-22密码学

2020-02-22密码学

作者: Coke26 | 来源:发表于2020-02-23 13:04 被阅读0次

    对称加密 —— 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

    相关文章

      网友评论

          本文标题:2020-02-22密码学

          本文链接:https://www.haomeiwen.com/subject/zmfrqhtx.html