1.c#实现
/*
*加密生成MD5
*/
public static String MD5(string s)
{ char[] hexDigits = { ‘0‘, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘, ‘9‘, ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘ }; MD5 md5 = new MD5CryptoServiceProvider(); byte[] inputBytes = System.Text.Encoding.UTF8.GetBytes(s); byte[] result = md5.ComputeHash(inputBytes); int j = result.Length; char[] str = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = result[i]; str[k++] = hexDigits[byte0 >> 4 & 0xf]; str[k++] = hexDigits[byte0 & 0xf]; } return new String(str); }
2.Java实现
public final class DefaultPasswordEncoder { private static final char[] HEX_DIGITS = {‘0‘, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘, ‘9‘, ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘}; private final String encodingAlgorithm="MD5"; private final String characterEncoding="UTF-8"; /*
*加密生成MD5
*/ public String encode(final String password) { if (password == null) { return null; } try { MessageDigest messageDigest = MessageDigest .getInstance(this.encodingAlgorithm); if (StringUtils.hasText(this.characterEncoding)) { messageDigest.update(password.getBytes(this.characterEncoding)); } else { messageDigest.update(password.getBytes()); } final byte[] digest = messageDigest.digest(); return getFormattedText(digest); } catch (final NoSuchAlgorithmException e) { throw new SecurityException(e); } catch (final UnsupportedEncodingException e) { throw new RuntimeException(e); } } /** * Takes the raw bytes from the digest and formats them correct. * * @param bytes the raw bytes from the digest. * @return the formatted bytes. */ private String getFormattedText(final byte[] bytes) { final StringBuilder buf = new StringBuilder(bytes.length * 2); for (int j = 0; j < bytes.length; j++) { buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]); buf.append(HEX_DIGITS[bytes[j] & 0x0f]); } return buf.toString(); } }
原文:https://www.cnblogs.com/oumi/p/9161507.html