MD5的全称是Message Digest Algorithm 5(消息摘要算法第五版),是计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。在90年代初由MIT Laboratory for Computer Science 和RSA Data Security Inc的Ronald L.Rivest开发,经MD2、MD3和MD4发展而来。Message-Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一定长的大整数。请注意我使用了“字节串”而不是“字符串”这个词,是因为这种变换只与字节的值有关,与字符集或编码方式无关。

MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。

MD5加密是不可逆的,只有加密,没有解密

#warning mark - MD5加密方法

-(NSString *) md5HexDigest:(NSString *)string

{

const char *original_str = [string UTF8String];

unsigned char result[CC_MD5_DIGEST_LENGTH];

CC_MD5(original_str, (CC_LONG)strlen(original_str), result);

NSMutableString *hash = [NSMutableString string];

for (int i = 0; i < 16; i++)

[hash appendFormat:@"%02X", result[i]];

return [hash lowercaseString];

}

#warning mark - MD5加密方法

-(NSString *) md5HexDigest1:(NSString *)string

{

const char *original_str = [string UTF8String];

unsigned char result[CC_MD5_BLOCK_BYTES];

CC_MD5(original_str, (CC_LONG)strlen(original_str), result);

NSMutableString *hash = [NSMutableString string];

for (int i = 0; i < 16; i++)

[hash appendFormat:@"%02X", result[i]];

return [hash lowercaseString];

// bf9017d04f72c1b5ba407971fbf61289

// bf9017d04f72c1b5ba407971fbf61289

}

最新文章

  1. python函数
  2. SpringMVC操作指南-登录功能与请求过滤
  3. Dubbo系列(1)_背景介绍和基本情况
  4. 江湖救急:webbrowser中js文件丢失问题~
  5. Android 模糊效果
  6. php session_start() 非常慢 问题原因查找
  7. 小甲鱼python视频弟十一讲(课后习题)
  8. 银行支票和汇票中使用的专用字体MICR E13B条形码控件字体
  9. LeetCode48 Rotate Image
  10. CoreAnimation 核心动画一 (一些常用属性 和 方法)
  11. NGINX配置小随笔
  12. Starship Troopers(HDU 1011 树形DP)
  13. 性能测试培训:WebSocket协议的接口性能之Jmeter
  14. android wear开发之:增加可穿戴设备功能到通知中 - Adding Wearable Features to Notifications
  15. 微信小程序路过
  16. jdbc连接字符串
  17. Python+AutoIt实现界面工具开发
  18. 设置Editext的光标宽高与颜色
  19. maven build pulgin
  20. The message port closed before a response was received.

热门文章

  1. C++ const 限定符
  2. quartz 定时调度持久化数据库配置文件
  3. gridview回顾
  4. javaScript中有关正则表达式的用法总结
  5. 模拟美萍加密狗--Rockey2虚拟狗(二)
  6. Qt中QFtp获取带有中文的文件名称出现乱码的解决方法(执行操作前就转换编码)
  7. 利用bind搭建dns
  8. java--String常量池问题的几个例子
  9. 汇编语言学习——第二章 寄存器(CPU工作原理)
  10. android 在新建短信时,加入名称为&quot;,&quot;(英文逗号)的联系人时,应用崩溃的修改