iOS逆向 -- HASH和对称加密

上一篇讲了 RSA加密的由来(一大堆数学公式看的很懵逼,其实大概了解了rsa的非对称加密怎么来的就可以)

今天这篇讲HASH和对称加密

HASH

hash的概念我就不介绍了 主要介绍一下它的特点和应用

通常hash有 MD5 sha1 sha256 sha523 还有更高级的hmac

hash的特点

  • 算法是公开的
  • 对相同数据运算结果相同
  • 对不同的数据运算,得到的结果默认是128位,32个字符
  • 不可逆运算

hash的用户

  1. 用户密码的加密
  2. 搜索引擎
  3. 版权
  4. 数字签名

重点来讲一下如何用hash加密用户密码?

通常来讲无论是客户端还是服务端都不能保存用户密码的明文(这很危险)

所以客户端登录使用密码的MD5值 发送服务器 然后服务器对比数据库进行验证

但是呢hash虽然是不可逆的,但是同样有个缺点就是相同数据结果运算相同,所以就有了

 

所以直接使用MD5也变得越来越不安全了

后来呢人们想了一种方式 ‘加盐’

密码 + “1u93fh1QUO$!@)&$@!@%))%@!*$#@!$” 再进行md5 这样CMD5能查出来的可能性基本就为0了

但是呢这种方式 由于‘盐’是固定的,所以一旦泄露后果也是不堪设想的

所以后来就有了 比较高级的 HMAC

在登录的时候再跟服务器请求时间戳 然后进行hash 将更无懈可击。

接下来讲一下数字签名是怎么回事儿

数字签名这个东西是用来确认这个东西是由你发来的,而不是经过第三方获取后伪装的

hash的作用就出来了,你把你的数据 还有你的数据的hash值一并发过来进行验证,

当然这样还是有可能会被截获,然后第三方把你的hash一改还是无法辨认

所以数据的hash值使用RSA加密,传过来这边进行解密,这就是完整的数字签名过程了

画的稍微丑了点儿,没关系

 

讲完非对称加密 HASH 接下里就是对称加密了

常见算法有 DES(使用较少,强度不够)

3DES (DES的加强版,但是需要保存3个密钥) 

AES (高级密码标准)

应用模式有ECB(电子密码本模式,每一块数据,独立加密)

CBC(分组链接模式,使用一个密钥和初始化向量IV对数据执行加密)该方案可以有效保证密文的完整性。

这些方式就不一一进行演示了

如果是iOS开发者可以访问这里下载几个类来演练一下

这里要注意一点 iOS自带的加密库 最后会调用到这个方法里

CCCryptorStatus CCCrypt(
    CCOperation op,         /* kCCEncrypt, etc. */
    CCAlgorithm alg,        /* kCCAlgorithmAES128, etc. */
    CCOptions options,      /* kCCOptionPKCS7Padding, etc. */
    const void *key,
    size_t keyLength,
    const void *iv,         /* optional initialization vector */
    const void *dataIn,     /* optional per op and alg */
    size_t dataInLength,
    void *dataOut,          /* data RETURNED here */
    size_t dataOutAvailable,
    size_t *dataOutMoved)
    API_AVAILABLE(macos(10.4), ios(2.0));

然后使用符号断点依然是可以截取到你的明文的 所以加密的时候也尽量不要直接使用明文。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值