Android和IOS等效MD5加密
最近在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
Android和IOS等效MD5加密的更多相关文章
- .NET/android/java/iOS AES通用加密解密(修正安卓)
移动端越来越火了,我们在开发过程中,总会碰到要和移动端打交道的场景,比如.NET和android或者iOS的打交道.为了让数据交互更安全,我们需要对数据进行加密传输.今天研究了一下,把几种语言的加密都 ...
- .NET/android/java/iOS AES通用加密解密
移动端越来越火了,我们在开发过程中,总会碰到要和移动端打交道的场景,比如.NET和android或者iOS的打交道.为了让数据交互更安全,我们需要对数据进行加密传输.今天研究了一下,把几种语言的加密都 ...
- iOS中MD5加密字符串实现
1.MD5加密 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为RFC 1321 ...
- android HTTP发送及MD5加密收集
发送部分: public void MyFunction{ HttpClient httpclient = new DefaultHttpClient(); //你的URL HttpPost http ...
- Android对敏感数据进行MD5加密(基础回顾)
1.在工具类的包下新建一个进行md5加密的工具类MD5Utils.java package com.example.mobilesafe.utils; import java.security.Mes ...
- java和android及IOS对接RSA加密经验
1.网上找的java生成RSA密钥对的例子,产生的字附串实际上是hax后和密钥串 你可以将他们当成静态字附串存在java代码里 2.android和java可以代码复用,IOS对接比较麻烦 3.IOS ...
- iOS开发——MD5加密
#import <CommonCrypto/CommonDigest.h> - (NSString *)md5:(NSString *)str { const char *cStr = [ ...
- [Android]对字符串进行MD5加密
/** * 将字符串转成MD5值 * * @param string * @return */ public static String stringToMD5(String string) { by ...
- iOS 中常用的对密码进行MD5加密
iOS中MD5加密 标签(空格分隔): iOS MD5 + (NSString *)MD5:(NSString *)str { const char *cStr = [str UTF8String]; ...
随机推荐
- OpenStack、KVM、Docker——Docker之后还需要OpenStack吗?
原文链接:http://news.csdn.net/article_preview.html?preview=1&reload=1&arcid=2823129 Docker从一个新兴的 ...
- STL编程:C++的忠告!
Copy别人的,有少量修改,可以做为一下参考! C++之父Bjarne Stroustrup 写的 The C++ Programming Language (Special Edition) 中各章 ...
- RabbitMQ学习之集群模式
由于RabbitMQ是用erlang开发的,RabbitMQ完全依赖Erlang的Cluster,因为erlang天生就是一门分布式语言,集群非常方便,但其本身并不支持负载均衡.Erlang的集群中各 ...
- ReactiveX
http://reactivex.io The real power comes with the “reactive extensions” (hence “ReactiveX”) — operat ...
- Vue2:实例生命周期、js生命周期
1.vue2生命周期 每个 Vue 实例在被创建之前都要经过一系列的初始化过程.例如,实例需要配置数据观测(data observer).编译模版.挂载实例到 DOM ,然后在数据变化时更新 DOM ...
- mysql_connect() 不支持 请检查 mysql 模块是否正确加载
php的扩展 没有配置好! 打开php.ini文件: 搜索pdo_mysql和curl ;extension=php_curl.dll ;extension=pdo_mysql.dll 然后把2者前面 ...
- Python基础学习_01字符串的拼接(字符串的格式化输出)
# 字符串的拼接 ---字符串的格式化输出 # 字符串的拼接 ---字符串的格式化输出 name = input("name:") age = input("age:&q ...
- kernel对NTP的API,系统调用函数
kenrel API for NTP kernel 提供两个API(即系统调用 system call)给应用程序NTP,去校准kernel system clock Kernel Applicati ...
- 小松之LINUX 驱动学习笔记(开篇)
时间对每个人都是公平的,就看你怎么对待他.每天多努力一点,未来就会轻松一点.作为一名北漂,感受着首都的压力,也曾萌生过逃离北上广的想法,但是,最后我最终还是选择留下来,随着年龄的增长,我已经没有那么多 ...
- 2015 Multi-University Training Contest 9 hdu 5396 Expression
Expression Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...