关闭

iOS MD5加密

标签: iosmd5加密-加盐
681人阅读 评论(0) 收藏 举报
分类:

哈哈!先上理论篇:
 MD5的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。比如,在UNIX下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如:

  MD5 (tanajiya.tar.gz) = 0ca175b9c0f726a831d895e269332461

  这就是tanajiya.tar.gz文件的数字签名。MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。为了让读者朋友对MD5的应用有个直观的认识,笔者以一个比方和一个实例来简要描述一下其工作过程:

  大家都知道,地球上任何人都有自己独一无二的指纹,这常常成为公安机关鉴别罪犯身份最值得信赖的方法;与之类似,MD5就可以为任何文件(不管其大小、格式、数量)产生一个同样独一无二的“数字指纹”,如果任何人对文件名做了任何改动,其MD5值也就是对应的“数字指纹”都会发生变化。

  我们常常在某些软件下载站点的某软件信息中看到其MD5值,它的作用就在于我们可以在下载该软件后,对下载回来的文件用专门的软件(如Windows MD5 Check等)做一次MD5校验,以确保我们获得的文件与该站点提供的文件为同一文件。利用MD5算法来进行文件校验的方案被大量应用到软件下载站、论坛数据库、系统文件安全等方面。

  MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现(两个MD5值不相同)。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。

  MD5还广泛用于操作系统的登陆认证上,如Unix、各类BSD系统登录密码、数字签名等诸多方。如在UNIX系统中用户的密码是以MD5(或其它类似的算法)经Hash运算后存储在文件系统中。当用户登录的时候,系统把用户输入的密码进行MD5 Hash运算,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这可以避免用户的密码被具有系统管理员权限的用户知道。MD5将任意长度的“字节串”映射为一个128bit的大整数,并且是通过该128bit反推原始字符串是困难的,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。所以,要遇到了md5密码的问题,比较好的办法是:你可以用这个系统中的md5()函数重新设一个密码,如admin,把生成的一串密码的Hash值覆盖原来的Hash值就行了。

  正是因为这个原因,现在被黑客使用最多的一种破译密码的方法就是一种被称为”跑字典”的方法。有两种方法得到字典,一种是日常搜集的用做密码的字符串表,另一种是用排列组合方法生成的,先用MD5程序计算出这些字典项的MD5值,然后再用目标的MD5值在这个字典中检索。我们假设密码的最大长度为8位字节(8 Bytes),同时密码只能是字母和数字,共26+26+10=62个字符,排列组合出的字典的项数则是P(62,1)+P(62,2)….+P(62,8),那也已经是一个很天文的数字了,存储这个字典就需要TB级的磁盘阵列,而且这种方法还有一个前提,就是能获得目标账户的密码MD5值的情况下才可以。这种加密技术被广泛的应用于UNIX系统中,这也是为什么UNIX系统比一般操作系统更为坚固一个重要原因。
  然并卵,理论那么多,实践就几行代码!
  先加上类库的头文件
再封装一个带参数的函数

+(NSString ) md5: (NSString ) inPutText
{
const char *cStr = [inPutText UTF8String];
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5(cStr, strlen(cStr), result);

return [[NSString stringWithFormat:@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
         result[0], result[1], result[2], result[3],
         result[4], result[5], result[6], result[7],
         result[8], result[9], result[10], result[11],
         result[12], result[13], result[14], result[15]
         ] lowercaseString];

}
最后再调用一下!
NSLog(@”%@”,[ViewController md5:@”123”]);
OK,这样一个煎蛋的MD5加密就好啦!
分享一个在线MD5网站:http://md5jiami.51240.com可以验证一下自己解密到的是否正确
注意:MD5有一个法则,同样的一个数据,每次加密的结果是一样,所以安全系数高的软件还要进行加盐,这个面试估计要问到

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

【iOS】MD5(加密)/AES/Base64加密和解密

MD5 什么是MD5 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。MD5的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。 MD5的特点 1、...
  • zhuming3834
  • zhuming3834
  • 2016-06-27 20:53
  • 7580

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

在做网络应用程序的时候, 时时刻刻要保证用户数据的安全, 因此要加密。 *MD5算法在国内用的很多. *同样的数据加密结果是一样的.(32个字符) *不可逆的.(不能逆向解密) *可用于文件校验/指纹识别. MD5算法是公开的,iOS中已经实现了MD5算法。 可以将其写成字符串的分类: - ...
  • xn4545945
  • xn4545945
  • 2014-07-04 01:52
  • 14393

iOS实现MD5加密的代码

软件开发过程中,对数据进行加密是保证数据安全的重要手段,常见的加密有Base64加密和MD5加密。Base64加密是可逆的,MD5加密目前来说一般是不可逆的。我们在开发一款iOS App过程中,对于发送的请求,其中有个“sign”的字段,这个key对应的value是MD5加密的字段。 MD5即...
  • u012265444
  • u012265444
  • 2016-07-01 16:29
  • 2184

IOS端与Java端MD5加密方法

IOS端与Java端MD5加密方法 关于NSString的MD5加密,这不难,在网上可以搜到很多算法,主要是跟后台的统一会出问题,对同一段字符串,ios和java加密后的结果可能不一样,很坑爹。现在贴一下ios端和后台java的代码。 java端: public class test { ...
  • wwd0501
  • wwd0501
  • 2016-09-14 16:12
  • 2699

OC之使用MD5加密字符串、NSData和文件的方法

这个类的三个类方法可以将字符串、NSData对象和文件加密为32位的MD5值 【MD5UTils.h】 #import #import #define FileHashDefaultChunkSizeForReadingData 1024*8 // 8K @interface MD...
  • u011349387
  • u011349387
  • 2015-08-06 16:19
  • 5569

iOS开发 关于MD5加密的相关使用

MD5简介 简单说明: MD5:全称是Message Digest Algorithm 5,译为“消息摘要算法第5版” 效果:对输入信息生成唯一的128位散列值(32个字符) MD5生成的是固定的128bit,即128个0和1的二进制位,而在实际应用开发中,通常是以16进制输出的...
  • IT_ZGC
  • IT_ZGC
  • 2016-06-08 16:18
  • 1732

IOS之sha加密、md5常规加密、md5二次加密详解及示例程序

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://developerpan.blog.51cto.com/7454463/1254875 这些天写的程序需要用到SHA512加密。 顺带着就实现了I...
  • michaelKiven
  • michaelKiven
  • 2015-10-15 12:18
  • 221

iOS加密解密大全(MD5,SHA,Base64等)

iOS当中常用到各种加密解密,做了个整理,包含如下: Encrypt/Decrypt: AES. Hash: MD5, SHA(SHA1, SHA224, SHA256, SHA384, SHA512). Encode/Decode: Base64, Hex.
  • jueyi1127
  • jueyi1127
  • 2016-03-28 18:12
  • 1217

iOS,一行代码进行RSA、DES 、AES、MD5加密、解密(转)

JAVA端的加密解密,读者可以看我同事的这篇文章:http://www.jianshu.com/p/98569e81cc0b 最近做了一个移动项目,是有服务器和客户端类型的项目,客户端是要登录才行的,服务器也会返回数据,服务器是用Java开发的,客户端要同时支持多平台(Android、iOS)...
  • qq_16844001
  • qq_16844001
  • 2016-05-27 10:18
  • 663

iOS开发中MD5加密算法的实现

一、MD5算法简介          MD5的全称是Message Digest Algorithm 5(消息摘要算法第五版),是计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。在90年代初由MIT Laboratory for ...
  • sharkleegroup
  • sharkleegroup
  • 2013-10-24 23:02
  • 4870
    个人资料
    • 访问:265849次
    • 积分:4273
    • 等级:
    • 排名:第8264名
    • 原创:136篇
    • 转载:29篇
    • 译文:19篇
    • 评论:50条
    博客专栏
    当前实时访问坐标
    微信公众号
    公众号《程序猿思维观世界》
    最新评论