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

验证数字签名
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容

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