博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android和IOS等效MD5加密
阅读量:4599 次
发布时间:2019-06-09

本文共 2788 字,大约阅读时间需要 9 分钟。

最近在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 
@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

转载于:https://www.cnblogs.com/jiy-for-you/p/6747583.html

你可能感兴趣的文章
Android 状态栏通知Notification、NotificationManager详解
查看>>
如何在Google Map中处理大量标记(ASP.NET)(转)
查看>>
Sublime Text 3中使用正则表达式删除空行
查看>>
UIApplicationDelegate协议
查看>>
再谈iOS 7的手势滑动返回功能
查看>>
Jmeter测试dubbo接口填坑
查看>>
python小练——找出指定目录下小于指定字节的文件,输出到文本文件
查看>>
渐渐磨砺--16年11月封闭总结
查看>>
[zz]GDB调试精粹及使用实例
查看>>
数据库的创建和删除
查看>>
【消息队列MQ】各类MQ比较
查看>>
最简单的三层实例【插入据
查看>>
设计模式学习笔记——Prototype原型模式
查看>>
pom.xml里有红叉报错的解决办法
查看>>
Perl last和next的用法区别
查看>>
Selenium 管理 Cookies
查看>>
ZOJ 1204 一个集合能组成多少个等式
查看>>
exceptionfunction[LeetCode]Permutations
查看>>
开始学习iOS开发
查看>>
从int 3探索Windows应用程序调试原理
查看>>