0
点赞
收藏
分享

微信扫一扫

彻底解决JAVA和.net MD5加密…

AbrahamW 2023-04-30 阅读 87


最近开发遇到.net和JAVA用MD5加密中文不一样的问题
JAVA的MD5加密方法如下:

public synchronized static final byte[] toMd5(String data,String encodingType) {
 
  
  
   
  MessageDigest digest = null;
 
  
  
   
  if (digest == null) { 
 
  
   
  try { 
 
  
   
  digest = MessageDigest.getInstance("MD5"); 
 
  
   
  } catch (NoSuchAlgorithmException
  nsae) { 
 
  
   
  System.err.println("Failed to load the MD5 MessageDigest. "); 
 
  
   
  nsae.printStackTrace(); 
 
  
   
  } 
 
  
  
   
  } 
 
  
  
   
  if (StringUtils.isBlank(data)) { 
 
  
  
   
  return null; 
 
  
  
   
  } 
 
  
  
   
  try {


--最重要的是这句,需要加上编码类型
 

digest.update(data.getBytes(encodingType)); 
 
  
  
   
  } catch (UnsupportedEncodingExcep
 tion e) { 
 
  
  
   
  digest.update(data.getBytes()); 
 
  
  
   
  } 
 
  
  
   
  return digest.digest(); 
 
  
  
   
 } 
 
  
  
   
 public static String MD5Encode(String origin,String encodingType) {
 
  
  
   
  byte[] md5Bytes = toMd5(origin,encodingType);
 
  
  
   
  return byteArrayToHexString(md5Bytes);
 
  
  
   
 }
 
 public static String byteArrayToHexString(byte[] b) {
 
  
  
   
   
   
 StringBuffer resultSb = new StringBuffer();
 
  
  
   
   
   
 for (int i = 0; i < b.length; i++) {
 
  
  
   
   
   
   
   
 resultSb.append(byteToHexString(b[i]));
 
  
  
   
   
   
 }
 
  
  
   
   
   
 return resultSb.toString();
 
  
  
   
 }
 


  
  
   
 private static String byteToHexString(byte b) {
 
  
  
   
   
   
 int n = b;
 
  
  
   
   
   
 if (n < 0) n = 256 + n;
 
  
  
   
   
   
 int d1 = n / 16;
 
  
  
   
   
   
 int d2 = n % 16;
 
  
  
   
   
   
 return hexDigits[d1] + hexDigits[d2];
 
  
  
   
 }


最后在客户端的调用方法为:
String key = MD5.MD5Encode(code+rMessage+userKey,"UTF-8");
这样的加密结果跟.NET加密结果一样

举报

相关推荐

0 条评论