package test; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * 加密工具类 * @author gxd * */ public class EncriptUtil { public static void main(String[] args) { String str = "我爱你23" ; System.out.println(EncriptUtil.getMd5("MD5",str)); } public static String getMd5(String type , String str){ String md5str = null ; try { //获取报文摘要算法即散列算法 传入的字符串不区分大小写 调用 getInstance 将返回已初始化过的MessageDigest对象。因此,它不需要进一步的初始化。 // 注意:这里不是单例模式产生的对象 两次拿到的对象实例是不同的 !== // SUN提供的常用的算法名称有:MD2 MD5 SHA-1 SHA-256 SHA-384 SHA-512 MessageDigest md = MessageDigest.getInstance(type); // 通过调用 update 方法向MessageDigest对象提传送要计算的数据 默认采用当前系统编码 gbk 采用不同编码结果是不同的 md.update(str.getBytes()); // md.update(str.getBytes("UTF8")); // 调用 digest(摘要)方法来计算消息摘要(即生成散列码) byte[] digest = md.digest(); // System.out.println(Arrays.toString(digest)); //对计算生成的md5使用 sun.misc.BASE64Encoder进行简单的加密。 // BASE64Encoder be = new BASE64Encoder(); // md5str = be.encode(digest); // System.out.println(md5str); //对生成的md5深度处理 StringBuffer sb = new StringBuffer(); for (int i = 0; i < digest.length; i++) { sb.append(Integer.toHexString(0xff & digest[i])); } md5str = sb.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); throw new RuntimeException("指定加密方式不存在"); } // System.out.println(md5str.length()); return md5str; } }
时间: 2024-10-08 20:18:53