IOS端与Java端MD5加密方法

关于NSString的MD5加密,这不难,在网上可以搜到很多算法,主要是跟后台的统一会出问题,对同一段字符串,ios和java加密后的结果可能不一样。现在贴一下ios端和后台java的代码。

java端:

 1 public class test {
 2     public final static String MD5(String s) {  
 3           char hexDigits[] = { ‘0‘, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘, ‘9‘,  
 4             ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘ };  
 5           try {  
 6                byte[] strTemp = s.getBytes();
 7                MessageDigest mdTemp = MessageDigest.getInstance("MD5");  
 8                mdTemp.update(strTemp);  
 9                byte[] md = mdTemp.digest();  
10                int j = md.length;  
11                char str[] = new char[j * 2];  
12                int k = 0;  
13                for (int i = 0; i < j; i++) {  
14                     byte byte0 = md[i];
15                     str[k++] = hexDigits[byte0 >>> 4 & 0xf];  
16                     str[k++] = hexDigits[byte0 & 0xf];  
17                }
18                return new String(str);  
19               } catch (Exception e) {  
20                return null;  
21               }  
22          }
23   
24     //测试
25     public static void main(String[] args) {
26         String testStr = "1";
27         String resultStr = MD5(testStr);
28         System.out.println(resultStr);
29     }    
30 }

IOS端,.h文件

@interface NSString_MD5 : NSObject

+(NSString *)stringToMD5:(NSString *)inputStr;

@end

.m文件

 1 #import "CommonCrypto/CommonDigest.h"
 2 
 3 @implementation NSString_MD5
 4 
 5 +(NSString *)stringToMD5:(NSString *)inputStr{
 6     const char *cStr = [inputStr UTF8String];
 7     unsigned char result[CC_MD5_DIGEST_LENGTH];
 8     CC_MD5(cStr, strlen(cStr), result);
 9     NSString *resultStr = [NSString stringWithFormat:@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
10                            result[0], result[1], result[2], result[3],
11                            result[4], result[5], result[6], result[7],
12                            result[8], result[9], result[10], result[11],
13                            result[12], result[13], result[14], result[15]
14                            ];
15     return [resultStr lowercaseString];
16 }
17 
18 @end

然后使用时可以这样,

NSString *pwd = [NSString_MD5 stringToMD5:@"sss"];

用这两种方法,可以达到ios端和java端加密后的结果一致。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。