使用Java的MessageDigest实现MD5加密算法MD5加密算法的实现原理MessageDigest类updateresetdigestisEqualgetInstance字符串的MD5加密算法文本的MD5加密工具类MD5加密算法的实现原理Java中MD5加密算法的实现:

文章插图
public class MD5 {// 全局数组private final static String[] strDigit = {\\”1\\”, \\”2\\”, \\”3\\”, \\”4\\”, \\”5\\”, \\”6\\”, \\”7\\”, \\”8\\”, \\”9\\”, \\”a\\”, \\”b\\”, \\”c\\”, \\”d\\”, \\”e\\”, \\”f\\”};
public class MD5 {}
// 返回形式为数字和字符串private static String byteToArrayString(byte bByte) {int iRet = bByte;if (iRet < 0) {iRet += 256;}int iD1 = iRet / 16;int iD2 = iRet % 16;return strDigits[iD1] + strDigits[iD2];}
// 返回形式只为数字private static String byteToNum(byte bByte) {int iRet = bByte;if (iRet < 0) {iRet += 256;}return String.valueOf(iRet);}
// 将字节数组转换成为16进制的字符串private static String byteToString(byte[] bByte) {StringBuffer stringBuffer = new StringBuffer();for (int i; i < bByte.length; i++) {StringBuffer.append(byteToArrayString(bByte[i]));}return stringBuffer.toString();}
// 获取MD5值public static String GetMD5Code(String strObj) {String resultString = null;try {resultString = new String();MessageDigest md5 = MessageDigest.getInstance(\\”MD5\\”);// md5.digest() – 返回值为存放Hash值结果的byte数组resultString = byteToString(md5.digest(strObj.getBytes()));} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return resultString;}}MessageDigest类MessageDigest类:为应用程序提供信息摘要算法的功能.比如MD5算法和SHA算法信息摘要是安全的单向Hash函数 : 接收任意大小的数据,并输出固定长度的Hash值updateMessageDigest对象在开始时会被初始化对象通过调用update() 方法处理数据
/** * 使用指定的byte数组更新摘要 * * @param input 指定的byte数组 */public void update(byte[] input);reset任何时候都可以调用reset() 方法重置摘要digest一旦所需要更新的数据都已经被更新后,应该调用digest() 方法完成Hash计算对于给定数量的更新数据 ,digest() 方法只能被调用一次.再调用digest() 方法之后,MessageDigest对象被重新设置成初始状态
/** * 通过执行诸如填充之类的最终操作完成Hash计算. * 在调用此方法之后,摘要被重置 * * @return byte[] Hash计算后的byte数组 */public byte[] digest();isEqual
/** * 比较两个摘要的相等性.做简单的字节比较 * * @param digestA 比较的摘要字节数组A * @param digestB 比较的摘要字节数组B * @return boolean 是否相等 */public static boolean isEqual(byte[] digestA, byte[] digestB);getInstance返回实现指定摘要算法的MessageDigest对象
/** * 返回实现指定摘要算法的MessageDigest对象 * * @param algorithm 请求的算法的名称 * @param provider 提供者名称 * @return MessageDigest 指定摘要算法的MessageDigest对象 * @throws NoSuchAlgorithmException 当指定的请求算法名称不存在时抛出异常 */public static MessageDigest getInstance(String algorithm) throws NoSuchAlgorithmException;
/** * 返回实现指定摘要算法的MessageDigest对象 * * @param algorithm 请求算法的名称 * @return MessageDigest 指定摘要算法的MessageDigest对象 * @throws NoSuchAlgorithmException 当指定的请求算法名称不存在时抛出异常 */public static MessageDigest getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException;Provider可以通过java.security.Security的getProviders() 方法获得已注册的提供者列表SUN提供的常用的算法:MD2MD5SHA-1SHA-256SHA-384SHA-512字符串的MD5加密算法使用Java自带的MessageDigest实现对文本的MD5加密算法:
- 凝胶露的正确使用方法 大家有没有用过舒美露天然凝胶呢 一种女性
- 美肤宝花之肽玉露润颜花泥怎么使用 闺蜜宝的使用方法和功效
- 脖子上不断长出小肉球 克疣液的使用方法和副作用
- 欧莱雅复颜抗皱清乳柔肤水闻起来什么味道 欧莱雅柔肤水使用方法
- sy机动绞磨使用方法 发现一种超爽的sy方法
- 有谁用过白里透红的去斑霜 韩国g2美白祛斑霜使用方法
- 不浪费抗原|不浪费抗原的正确使用方法 为什么发烧了抗原还是阴性
- 金霉素眼膏新生儿能用吗 盐酸金霉素眼膏使用方法
- 白菜生根水的正确使用方法 喝白菜根水会引起发烧么
- 花椒粒的正确使用方法 花椒治尖锐疣的方法
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
