iOS安全之HASH加密

HASH

现在在处理App的用户敏感信息方面,大部分都是采用HASH加密的方式来进行处理。

1、HASH的概念

Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

2、HASH的特点

• 算法是公开的

• 对相同数据运算,得到的结果是一样的

• 对不同数据运算,如MD5得到的结果默认是128位,32个字符(16进制标识)。

• 没法进行逆运算

• 信息摘要,信息“指纹”,是用来做数据识别的。

3、HASH的用途

• 用户密码的加密

• 搜索引擎

• 版权

• 数字签名

密码加密处理

1、直接使用md5


    //密码

    NSString* pwd =@"123456";

    //MD5 直接加密 e10adc3949ba59abbe56e057f20f883e

    //不足:不够安全了。可以反查询!

    pwd = pwd.md5String;

2、md5+salt方式


    //MD5 加盐

    //弊端: 盐是固定的,写死在程序里面,一旦泄露就不安全了!

    static NSString * salt = @"67%^&^ffhjgjkHD";

    pwd = [pwd stringByAppendingString:salt].md5String;

3、HMAC方式加密


    /** HMAC

     *  使用一个密钥加密,并且做两次散列!

     *  在实际开发中,密钥(KEY)来自于服务器(动态的)!

     *  一个账号,对应一个KEY,而且还可以跟新!

     */

    NSString*serverKey =@"chh";

    pwd = [pwd hmacMD5StringWithKey:serverKey];

4、HMAC方式优化


     /** HMAC优化

      * 由于直接一直使用HMAC的话,容易被逆向获取HMAC,

      * 所以考虑在传输HMAC的前向服务器请求时间戳(忽略秒),

      * 然后在HMAC基础上加上服务器的时间戳并进行md5加密后进行传输 

      * 服务器存储的是HMAC(密码+KEY)的值和KEY,key用于返给客户端,校验的时候只需拿HMAC这个值再加上时间戳进行MD5进行比较

     */

    pwd = [[pwd hmacMD5StringWithKey:serverKey] stringByAppendingString:@"服务器时间戳"].md5String;

数字签名

数字签名本质上是通过HASH算法和RSA加密来实现的。

HASH算法专门用来做文件数据的识别.那么在网络数据传递的过程中,我们可以将明文数据,和数据的HASH值一起传递给对方.对方可以拿出HASH值来进行验证。

但是在这个过程中,如何做到数据的保护呢?明文数据和HASH值如果直接传递就有都被篡改的风险.所以这里我们要对数据进行加密。明文数据有时会比较大,不适合使用RSA非对称加密算法,那么数据的HASH值是比较小的。这个数据是用于校验的,它完全可以使用RSA来加密。所以在数据传递的时候,我们将明文数据加上通过RSA加密的校验数据一并传递给对方。那么这个通过RSA加密的校验数据,我们称之为签名.

生成数字签名

验证数字签名

当对方拿到数据之后,如何进行验证呢?

首先传递数据时会将原始的数据和数字签名一起发送

对方拿到数据后,先进行校验,拿到原始数据,通过同样的HASH算法得到数据的HASH值。

然后通过非对称加密,将数字签名中的校验HASH值解密出来。

最后对比两个HASH值是否一致,这样可以很好的判断数据是否被篡改。

验证数字签名
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这篇文章主要讲述在Mobile BI(移动商务智能)开发过程中,在网络通信、数据存储、登录验证这几个方面涉及的加密...
    雨_树阅读 7,910评论 0 6
  • Hash 算法与数字摘要 Hash (哈希或散列)算法它能将任意长度的二进制明文串映射为较短的(通常是固定长度的)...
    你看我像豆子嘛阅读 4,982评论 0 2
  • 背景 ​ 随着移动互联网的普及,被越来越多的心怀不轨的人觊觎,也越来越多的安全问题暴露了出来。开发者开发出来的应用...
    陵无山阅读 8,159评论 1 13
  • 很想写些什么,但对着手机,一本正经的准备写的时候才发觉自己不知道从何写起。 三年的全职妈妈我算是熬过来了,...
    会飞的小老鼠阅读 1,059评论 0 0
  • 梦里一树 红花红果 爱恋的她 身着他爱的红 她想他会如约 会在约定的时间 在那山楂树下为她别上红花 只因他曾许诺:...
    极度差阅读 1,540评论 3 5