美文网首页
加密方法初解

加密方法初解

作者: iOS_July | 来源:发表于2018-07-02 17:48 被阅读28次
    lock

    前言:
    依旧是可以说很良心了,今天了解了一下加密,才发现其中内容真的多,涉及具体的需求
    一般常用MD5,再进一步就是加盐,再进一步就是乱序,再再进一步就是HMAC

    @非对称加密算法

    RSA - 加密算法
    • 公钥加密-私钥解密
    • 私钥加密-公钥加密
    • KEY-其实就是一个数字
    • 只能通过因式分解破解

    哈希(散列)函数
    • MD5
    • SHA1
    • SHA256/512

    @对称加密算法

    • DES
    • 3DES
    • AES(高级密码标准,美国国家安全局使用,iOS操作系统内部使用)

    散列函数-特点

    • 算法公开
    • 对相同数据加密,得到的结果是一样的
    • 对于不同的数据加密,得到的结果都是定长的(32位字符a--z,0--9)
    • 信息摘要--信息指纹,用来做识别
    • 不能反算!

    散列函数-用途

    • 用户登录 : 服务器里存储的是加密后的密码,并不是明文密码,用户登录时,我们客户端也只是发送加密后的识别码
    • 搜索
    • 版权

    散列函数-破解

    • 目前破解的散列只有 MD5,SHA1 也在边缘
    • 散列碰撞,不同的数据使用MD5之后,能够得到相同结果的散列结果,这个网站,目前95%的正确查找率

    Example->MD5& HMAC

    MD5加盐[加入一段复杂且长的特殊字符串,使得MD5暴力破解数据库无法匹配]
    • 缺点-->盐是写死在程序里的,被认为掌握,存在泄漏的危险
    HMAC[另类加盐]
    • 优点-->给定一个密钥[一般从服务器获取,在注册时存储到服务器本地、客户端本地,客户端仅获取一次,这样减小了key被拦截的机率],对明文进行加密,并做两次散列--32位字符,这样的好处是,服务器随机给,客户端仅获取一次,所有的开发人员都不知道,不存在认为泄漏的潜在危险,也大大降低了被拦截的可能。
    • 缺点-->如果用户更换设备登录,那么该设备上是不具备对应的密钥的,此时用户便不能再登录了。所以,服务器端应该更换普通的账户保存方式[账号:密钥:加密之后的密码->(原始密码+KEY)HMAC<-]
    HMAC客户端登录思路
    • 1.1 用户输入账号、密码
    • 1.2 本地查找密钥[如果没有密钥,向服务器获取(对应账号)]
    • 1.3 举例:QQ的设备锁(异地登陆),通过判断本地是否有密钥,进而判断是否为用户的设备,如果判断不是用户设备,则向之前有密钥的手机客户端发送是否解锁的信息,解锁后,服务器则向你发送新的密钥。
    使得HMAC更进一步的安全[登录时]
    • 客户端:加密之后的密码 == (原始密码 + KEY)HMAC,再进一步做处理,最终向服务器发送的密码 == (加密之后的密码 + 201807021620)MD5
    • 服务器端:这时的判断进一步做更改,(加密之后的密码 + 201807021621) || (加密之后的密码 + 201807021620),使得只有1分钟的时效

    钥匙串访问

    1> 苹果的生态圈,从iOS7.0.3版本,开放给开发者
    2> 钥匙串加密方式是AES加密,可以将保存的密码以明文的方式反算给你
    3> 苹果原生的接口,都是C语言

    1.下载 SSKeyChain
    2. 根据GitHub上的指示,操作项目
    3. TARGETS-> Capabilities-> Keychain Sharing ->ON

    结束语

    毕业了,心情复杂,略带平静......

    相关文章

      网友评论

          本文标题:加密方法初解

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