最近在Android和IOS上都需要对用户的某些输入进行简单的加密,于是采用MD5加密方式。

  • 首先将目的字符串加密一次,获得32位字符串
  • 然后将32位字符串拆为2段,分别加密1次
  • 最后将加密后的2段拼接,加密100次

下面是Android的Java部分和IOS的Objective-C部分


import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; public class MD5Util
{
public static String getMD5(String content) {
String s = makeMD5(content);
String s1 = null;
if (s != null) {
s1 = s.substring(0, 16);
}
String s2 = null;
if (s != null) {
s2 = s.substring(16, 32);
}
s1 = makeMD5(s1);
s2 = makeMD5(s2);
s = s1 + s2;
for (int i = 0; i < 100; i++) {
s = makeMD5(s);
}
return s;
} private static String makeMD5(String content) {
try {
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.update(content.getBytes());
return getHashString(messageDigest);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
} private static String getHashString(MessageDigest messageDigest) {
StringBuilder builder = new StringBuilder();
for (byte b : messageDigest.digest()) {
builder.append(Integer.toHexString( ( b >> 4 ) & 0xf ) );
builder.append(Integer.toHexString( b & 0xf ) );
}
return builder.toString();
} }

#import "MD5Utils.h"
#import <CommonCrypto/CommonDigest.h> @implementation MD5Utils +(NSString*)MD5:(NSString *)input{
NSString* s = [self makeMd5:input];
NSString* s1 = [s substringToIndex:16];
NSString* s2 =[s substringFromIndex:16];
s1 = [self makeMd5:s1];
s2 = [self makeMd5:s2];
NSMutableString* md5String = [NSMutableString stringWithString:s1];
[md5String appendString:s2];
for(int i =0;i<100;i++){
md5String = [self makeMd5WithMutaleString:md5String];
}
return md5String;
} + (NSString*)makeMd5:(NSString*) str{
const char * pointer = [str UTF8String];
unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH];
CC_MD5(pointer, (CC_LONG)strlen(pointer), md5Buffer);
NSMutableString *string = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
[string appendFormat:@"%02x",md5Buffer[i]];
return string;
} + (NSMutableString*)makeMd5WithMutaleString:(NSMutableString*) str{
const char * pointer = [str UTF8String];
unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH];
CC_MD5(pointer, (CC_LONG)strlen(pointer), md5Buffer);
NSMutableString *string = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
[string appendFormat:@"%02x",md5Buffer[i]];
return string;
} @end

最新文章

  1. BZOJ 1044 木棍分割 解题报告(二分+DP)
  2. CryptoJS遇到的小坑
  3. 动态加载script文件的两种方法
  4. Cassandra对读写请求的处理机制
  5. QQ图片名字
  6. Cacti不显示图片(nan)
  7. 三道JS试题(遍历、创建对象、URL解析)
  8. JBPM学习(三):管理流程定义
  9. iOS触摸事件深入
  10. RSA非对称加密Java实现
  11. AngularJs中ng-controller下的函数在调用时为什么会执行两次?
  12. Android学习笔记View的工作原理
  13. C# 代码规范和质量检查工具 StyleCop.Analyzers
  14. codefroces 297E Mystic Carvings
  15. Unity中使用百度中文语音识别功能
  16. Javascript数组系列二之迭代方法1
  17. ECSHOP后台编辑器不能上传中文名图片的解决办法
  18. java学习之动手实验
  19. [py]列表生成式-支持条件,多值的拼接
  20. musql 添加字段语句

热门文章

  1. vue2 阻止时间冒泡
  2. Qt5.2 for Android 配置及部署到手机运行
  3. (转)基于MVC4+EasyUI的Web开发框架形成之旅--总体介绍
  4. Linux 中文件名颜色所代表的属性
  5. MongoDB经典入门(2)--shell命令
  6. day01_20181223
  7. 四种ASP网页跳转代码
  8. JavaScript进阶【五】利用JavaScript实现动画的基本思路
  9. 分治FFT/NTT 模板
  10. 【hdu 6351】Beautiful Now