iOS中MD5加密字符串实现

1.MD5加密

Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)

2.MD5加密作用

一致性验证

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算法来进行文件校验的方案被大量应用到软件下载站、论坛数据库、系统文件安全等方面。

指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个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系统比一般操作系统更为坚固一个重要原因。
3.iOS中实现MD5
(1)MD5加密字符串

将字符串进行MD5加密,返回加密后的字符串。

], result[], result[], result[], result[], result[], result[], result[], result[], result[], result[], result[], result[]

//        ]; 
//输出2 简化版
    NSMutableString *ret = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH];

    for(int i = 0; i<CC_MD5_DIGEST_LENGTH; i++) {
        [ret appendFormat:@"%02X",result];
    }    
    return ret;
}
更多相关文章
  • oracle中MD5加密步骤:1.创建函数FUNCTION GET_MD5( p_str in varchar2)RETURN varchar2 ISBEGINRETURN Utl_Raw.Cast_To_Raw(DBMS_OBFUSCATION_TOOLKIT.MD5(input_string = ...
  • SHA1和MD5加密均为不可逆加密.代码如下: "; //SHA1加密方法 var sha1 = new SHA1CryptoServiceProvider(); byte[] str01 = Encoding.Default.GetBytes(password); byte[] str0 ...
  • JAVA中MD5加密实现
    MD5加密实现  结 package com.pb; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmExcept ...
  • using System;using System.Collections.Generic;using System.Text; namespace StringEncry{class EncodeAndDecode{/// <summary>/// Base64加密/// </s ...
  • 0 2 项目中用的的加密算法,因为要和安卓版的适配,中间遇到许多麻烦.  MD5算法和DES算法是常见的两种加密算法.  MD5:MD5是一种不可逆的加密算法,按我的理解,所谓不可逆,就是不能解密,那么它有什么用的,它的用处大了,大多数的登录功能都会使用到这种算法.后面根据我的项目经验来介绍.  D ...
  • //导入命名空间using System.Security.Cryptography; MD5加密字符串 方式一: public string GetMD5String(string pwd){MD5CryptoServiceProvider md5=new MD5CryptoServiceProv ...
  • IOS中把字符串加密/IOS中怎么样MD5加密/IOS中NSString分类的实现
    看完过后,你会学到: 1学习IOS开发中的分类实现, 2以及类方法的书写, 3以及字符串的MD5加密/解密. ---------------------------wolfhous------------------ [1]新建工程,新建分类 [2]分类的命名方式以及类的选择 [3]书写NSStri ...
  • MD5的全称是Message-Digest Algorithm 5. MD5加密算法为现在应用最广泛的哈希算法之一,该算法广泛应用于互联网网站的用户文件加密,能够将用户密码加密为128位的长整数.数据库并不明文存储用户密码,而是在用户登录时将输入密码字符串进行MD5加密,与数据库中所存储的MD5值匹 ...
一周排行
  • Office365配置企业域名ExchangeOnline全过程
    1域名申请注册http://www.net.cn成功注册域名为Casegroup.cn,修 ...
  • ios开发工程师常见面试题汇总经过本人最近的面试和对面试资料的一些汇总,准备记录这些面试题,以便ios开发工程师找工作复习之用,本人希望有面试经验的同学能和我同时完成这个模块,先出面试题,然后会放出答案.1.Obje ...
  • 锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算资源(如CPU.RAM.I/O等)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所有数据库必须解决的一 ...
  • 让PHP飞--HHVM虚拟机初探(一)
    又到清明时,雨纷纷,人觞觞.有空闲的时间来学习记录点其他的东西.简介:大家都知道FaceB ...
  • OracleVMVirtualBox里虚拟机Windowsserver2012C盘扩容
    1.本地主机关闭虚拟机①进入VirtualBox的安装目录②运行VBoxManage li ...
  • 计算机网络行业认证体系简介
    CISCO认证体系介绍 思科认证体系是由Cisco公司建立的分为3个层次的网络技术证书体系 ...
  •       我的心情好多啦!雨过天晴了,不再生气了,虽然没有收到道歉,但看到她那楚楚可怜的样子.她那诺诺的声音我还真不忍心,其实时间长了会伤感情的,弄得两个人都不高兴,得不偿失,点到为止就好啦!两个人长期在一块,那又 ...
  • EntityFramework返回IEnumerable还是IQueryable
    在使用EF的过程中,我们常常使用repository模式,本文就在repository层的 ...
  •                    Linux 下挂载ntfs,fat32与挂载乱码的解决   (1)ntfs的挂载1.ntfs格式的分区,linux是不能直接挂载的,它需要使用软件:ntfs-3g2.在安装ntf ...
  • wget通过代理上网办法:先安装ntlmaps设置好代理(步骤略)方法一(只针对wget):# vi /etc/wgetrc 按a或i进入编辑模式http_proxy = http://127.0.0.865h ...
Tags