IOS端与Java端MD5加密方法

    xiaoxiao2022-06-30  42

    IOS端与Java端MD5加密方法

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

    java端:

    public class test { public final static String MD5(String s) { char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; try { byte[] strTemp = s.getBytes(); MessageDigest mdTemp = MessageDigest.getInstance("MD5"); mdTemp.update(strTemp); byte[] md = mdTemp.digest(); int j = md.length; char str[] = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = md[i]; str[k++] = hexDigits[byte0 >>> 4 & 0xf]; str[k++] = hexDigits[byte0 & 0xf]; } return new String(str); } catch (Exception e) { return null; } } //测试 public static void main(String[] args) { String testStr = "1"; String resultStr = MD5(testStr); System.out.println(resultStr); } }或:

    public static String md5(String str) { String digest = null; StringBuffer buffer = new StringBuffer(); try { MessageDigest digester = MessageDigest.getInstance("md5"); byte[] digestArray = digester.digest(str.getBytes()); for (int i = 0; i < digestArray.length; i++) { buffer.append(String.format("x", digestArray[i])); } digest = buffer.toString(); } catch (Exception e) { e.printStackTrace(); } return digest; } IOS端,.h文件

    @interface NSString_MD5 : NSObject +(NSString *)stringToMD5:(NSString *)inputStr; @end .m文件

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

    然后使用时可以这样,

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

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

    转载请注明原文地址: https://ju.6miu.com/read-1125644.html

    最新回复(0)