iOS 加密 : MD5

MD5:首先,md5不是加密。

   md5是摘要算法,主要是用来做认证,利用自身优势(不可逆、低碰撞率)解决公开网络中交换密钥、认证的问题,

   MD5相当于超损压缩,在计算过程中原文的部分信息会丢失。

MD5为什么不可逆?例子:

原文:
快点赞啊亲
加密规则:
每个字取拼音声调+笔画数,最后的结果计算乘积,为了也使得我的结果始终保持在一个限定范围内,取最后结果取其与2^14=16384的余数(随便取的,你们就当我有二进制强迫症吧)
如 快 是7画,4声,也就是“特征值11”,以此类推 点9+3=12 赞16+4=20 啊10+4=14 亲9+1=10
最后我发明的不可逆函数值就是
11*12*20*14*10=26400与16384的余数,也就是10016
如果单单给10016这个数字和加密算法,你是无论如何不可能推倒出原文是“快点赞啊亲”的,不过如果给你“快点赞啊亲”你却很容易验证答案是否正确。

签名有什么用?例子:

Encryption是为了保护明文的隐私性(privacy),防止隐私泄漏。设想一对小青年Alice和Bob还在暧昧中,俩人偷偷摸摸地去约会吃饭,不想让别人知道。Alice想告诉Bob今天约会时几点去吃饭,但是不想让其他任何人(可以抽象为以她的情敌Carol为代表的一切其他人)知道他俩的吃饭时间,这时候就用到加密。加密后解密者可以从密文(ciphertext)中恢复出明文(plaintext),也就是吃饭时间。

到MAC的时候场景就变了。这时候Alice和Bob这对小(gou)青(nan)年(nv)关系已经很稳定了,路人皆知了。但是情敌Carol依然存在,贼心不死。Alice这个时候再也不怕俩人约会吃饭的时间被别人看到了,她怕的是情敌篡改时间,让俩人不能碰面。于是她以明文发送时间,然后再附上对这个时间的MAC。Carol如果篡改了时间,那么MAC是照应不上的。也就是,此时不是为了保护这个约会时间的隐私性,而是为了保护它的完整性(integrity)。

(此链接来自知乎:http://www.zhihu.com/question/25104607/answer/38888836)

iOS上的MD5使用:

苹果包装了MD5加密的方法,使用起来十分的方便。

1、 导入头文件

  1. #import<CommonCrypto/CommonDigest.h>

2、加密的方法:

- (NSString *) md5:(NSString *) input {
const char *cStr = [input UTF8String];
unsigned char digest[CC_MD5_DIGEST_LENGTH];
CC_MD5( cStr, strlen(cStr), digest ); // This is the md5 call

NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];

for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x", digest[i]];

return output;
}

3、调用加密方法:

NSString *str = @"123456";

NSString *result = [self md5:str];

NSLog(@"%@",result);

输出的结果如图所示:

时间: 2024-08-23 09:15:38

iOS 加密 : MD5的相关文章

【iOS】MD5加密与网络数据安全

在做网络应用程序的时候, 时时刻刻要保证用户数据的安全, 因此要加密. MD5算法在国内用的很多. MD5算法的特点: *同样的数据加密结果是一样的.(32个字符) *不可逆的.(不能逆向解密) *可用于文件校验/指纹识别. MD5算法是公开的,iOS中已经包装好了MD5算法. 可以将其写成字符串的分类: - (NSString *)md5String { const char *string = self.UTF8String; int length = (int)strlen(string)

iOS开发 - 网络数据安全加密(MD5)

提交用户的隐私数据 一定要使用POST请求提交用户的隐私数据GET请求的所有参数都直接暴露在URL中请求的URL一般会记录在服务器的访问日志中服务器的访问日志是黑客攻击的重点对象之一 用户的隐私数据登录密码银行账号- - 数据安全 仅仅用POST请求提交用户的隐私数据,还是不能完全解决安全问题可以利用软件(比如Charles)设置代理服务器,拦截查看手机的请求数据因此:提交用户的隐私数据时,一定不要明文提交,要加密处理后再提交 常见的加密算法 <code class="hljs tex&q

iOS之那几种加密 MD5加密.

前言: 好好活着,因为我们会死很久.---海腾 iOS之那几种加密 MD5加密.  接下来我们看代码 NSString+MD5.h   // // NSString+MD5.h // UI21_MD5加密 // // Created by JR_Rafael on 16/1/11. // Copyright © 2016年 lanou3g. All rights reserved. // #import <Foundation/Foundation.h> @interface NSString

iOS中MD5加密字符串实现

在说原型模式之前,我们先来看java里面的深复制和浅复制: 1. 浅复制:被复制的对象的所有变量都持有和原来对象的变量相同的值,而所有的对其他对象的引用都指向原来的对象. 2. 深复制:被复制对象的所有变量都含有与原来对象相同的值,除去那些引用其他变量的对象.那些引用其他对象的变量将指向被复制过来的新对象,而不是原来那些被引用的对象.深复制需要把要复制的对象的所有引用都复制一遍. 这两者的区别就是关于引用对象的处理,浅复制是不考虑引用对象,而深复制需要考虑引用对象的问题. 对java中的clon

iOS开发-MD5加密、SHA1加密

1.MD5加密 ///MD5加密 + (NSString *)md5:(NSString *)inputString{ const char *cStr = [inputString UTF8String]; unsigned char digest[CC_MD5_DIGEST_LENGTH]; CC_MD5( cStr, (int)strlen(cStr), digest ); NSMutableString *output = [NSMutableString stringWithCapac

java加密MD5,DES

des,可以直接拿过去用的,,,不用深入了解算法的整个过程 package com.hotel.EncryptionAndDecryption; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.security.InvalidKeyException; import java.s

IOS加密 AES 256算法(EncryptAndDecrypt.h)[转载]

////EncryptAndDecrypt.h #import <Foundation/Foundation.h> @class NSString; @interface NSData (Encryption) - (NSData *)AES256EncryptWithKey:(NSData *)key; //加密 - (NSData *)AES256DecryptWithKey:(NSData *)key; //解密 - (NSString *)newStringInBase64FromDa

盐值加密-MD5

盐值加密-MD5 什么叫盐值加密 Spring security怎样进行盐值加密 以前的md5原理是 密码密文=md5算法(密码明文): 这样明文与密文其实还是一一对应的 那么人家就可以用字典攻击(就是一个一个的试)来探测密码 加盐(盐值加密)的算法很多 Spring security用的是: 密码密文=md5算法(密码明文{盐值}): 这个盐值就可以自己随便设置了,弄一个静态字符串或者用用户的登录名 举个例子: 用户名:thr 密码:fou 用用户名作为盐值 打开网页:http://www.m

密码加密MD5

密码加密MD5 创建NSString的类目 NSString+Password.h 1 // 2 // NSString+Password.h 3 // 03.数据加密 4 // 5 // Created by wyh on 15-1-10. 6 // Copyright (c) 2015年 itcast. All rights reserved. 7 // 8 9 10 #import <Foundation/Foundation.h> 11 12 @interface NSString (

ios 关于MD5 加密的32位与16位

在IOS开发过程中,为了保证数据的安全,我们通常要采取一些加密方法,常见的加密有Base64加密和MD5加密.Base64加密是可逆的,MD5加密目前来说一般是不可逆的.我们在开发一款App过程中,对于发的请求,其中有个“sign”的字段,这个key对应的value是MD5加密的字段,旁边的安卓同事问php后台,说MD5加密是32位的还是16位的,由于以前未曾注意过,所以就搜索了下,现在稍微总结下: MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传