美文网首页
iOS安全之HASH加密

iOS安全之HASH加密

作者: 拉拉的瓶子 | 来源:发表于2018-12-04 15:02 被阅读0次

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值是否一致,这样可以很好的判断数据是否被篡改。

验证数字签名

相关文章

  • iOS安全之HASH加密

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

  • Hash加密算法

    关键词:Hash加密算法、Security中的PasswordManagerHash与加密 密码安全 用户的密码,...

  • iOS安全之数字证书和安全机制

    iOS安全之数字证书和安全机制 非对称加密和摘要 非对称加密就是指加密密钥和解密密钥是不同的,而且加密密钥和解密密...

  • ⼀致性Hash算法(部分比较)

    Hash算法,⽐如说在安全加密领域MD5、SHA等加密算法,在数据存储和查找⽅⾯有Hash表等, 以上都应⽤到了H...

  • CA概述(加密类型介绍以及证书申请过程)

    对称加密 非对称加密 公钥加密交换对称密钥 hash加密与数字签名 加密算法的特性比较 证书作用:公钥的安全传递 ...

  • iOS逆向与安全1.1 :HASH、对称加密

    HASH 简述: Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入通过散列算法变换成固...

  • PHP小程序

    Hash加密与验证 Hash加密function pass($pass){ $hashpass = passwor...

  • 技能tree

    iOS 1、网络通信:socket、网络协议、request 2、安全方案:数据加密、传输加密、代码安全 3、数据...

  • 哈希算法

    Hash算法是现代密码体系中的一个重要组成部分,组要用于信息安全领域中加密算法 Hash算法是一种只能加密不能解密...

  • iOS 信息安全:MD5及DES、AES、RSA加密

    【安全篇】.NET,Android,iOS 双向互通DES+Base64加密 【安全篇】iOS中使用AES 256...

网友评论

      本文标题:iOS安全之HASH加密

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