最近在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加密的更多相关文章

  1. .NET/android/java/iOS AES通用加密解密(修正安卓)

    移动端越来越火了,我们在开发过程中,总会碰到要和移动端打交道的场景,比如.NET和android或者iOS的打交道.为了让数据交互更安全,我们需要对数据进行加密传输.今天研究了一下,把几种语言的加密都 ...

  2. .NET/android/java/iOS AES通用加密解密

    移动端越来越火了,我们在开发过程中,总会碰到要和移动端打交道的场景,比如.NET和android或者iOS的打交道.为了让数据交互更安全,我们需要对数据进行加密传输.今天研究了一下,把几种语言的加密都 ...

  3. iOS中MD5加密字符串实现

    1.MD5加密 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为RFC 1321 ...

  4. android HTTP发送及MD5加密收集

    发送部分: public void MyFunction{ HttpClient httpclient = new DefaultHttpClient(); //你的URL HttpPost http ...

  5. Android对敏感数据进行MD5加密(基础回顾)

    1.在工具类的包下新建一个进行md5加密的工具类MD5Utils.java package com.example.mobilesafe.utils; import java.security.Mes ...

  6. java和android及IOS对接RSA加密经验

    1.网上找的java生成RSA密钥对的例子,产生的字附串实际上是hax后和密钥串 你可以将他们当成静态字附串存在java代码里 2.android和java可以代码复用,IOS对接比较麻烦 3.IOS ...

  7. iOS开发——MD5加密

    #import <CommonCrypto/CommonDigest.h> - (NSString *)md5:(NSString *)str { const char *cStr = [ ...

  8. [Android]对字符串进行MD5加密

    /** * 将字符串转成MD5值 * * @param string * @return */ public static String stringToMD5(String string) { by ...

  9. iOS 中常用的对密码进行MD5加密

    iOS中MD5加密 标签(空格分隔): iOS MD5 + (NSString *)MD5:(NSString *)str { const char *cStr = [str UTF8String]; ...

随机推荐

  1. Linux学习之路三:重要概念之Linux系统层次结构

    上图来自Unix编程圣经<APUE>英文第二版.如图,处于最中心的是系统内核,负责机器硬件资源管理,进程管理等:shell,函数库(值得记住的是C标准函数库)和某些应用程序均直接构建于内核 ...

  2. B/S架构的网站测试

      一.功能测试 1.链接测试 链接是Web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些不知道地址的页面的主要手段.链接测试可分为三个方面.首先,测试所有链接是否按指示的那样确实链接到了 ...

  3. Laravel5.6安裝:Warning: require(../vendor/autoload.php): failed to open stream: No such file or directory

    在phpstudy下使用composer+laravel安装器的方式安装了Laravel,但是访问的时候报错: Warning: require(D:\phpstudy\WWW\public\mybl ...

  4. 前端开发—CSS 盒子、浮动、定位

    盒子模型 margin padding border content margin:            用于控制元素与元素之间的距离:body自带 8 像素的margin 需要手动去除.(快递盒之 ...

  5. PHP如何判断一个数组是一维的还是二维的

    1.首先我们有一个PHP内置函数 count(); count(array,mode); array是数组,mode默认为0,1是递归的计数 <?php if(count($arr) == co ...

  6. yum 安装nginx(配置开机启动)

    yum install -y nginx 通过yum安装的时候提示下面的错误 [root@localhost yum.repos.d]# yum install nginx 已加载插件:fastest ...

  7. python海龟的使用

    ############################螺旋正方形############################### import turtle turtle.left(90)for i ...

  8. sql2008删除语句.txt

    delete from [aixinxing].[dbo].[bbs2] where announceID in (select AnnounceID from [aixinxing].[dbo].[ ...

  9. Be born

    2018-07-22 16:22:03 Cherry is being greater and greater!

  10. UID和GID(详细说明)

    一.UID(User Identify)中文用户ID,相当于身份证一样,在系统中是唯一的. 用户分类centos6超级用户 UID=0 root普通用户 UID=500起 oldboy虚拟用户 UID ...