关于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端加密后的结果一致。