北京列举网 > 教育培训 > 电脑/网络 > 拉勾教育Java加密与解密之消息摘要算法
北京
[切换城市]

拉勾教育Java加密与解密之消息摘要算法

更新时间:2020-11-17 13:54:48 浏览次数:62次
区域: 北京 > 海淀 > 中关村
类别:软件工程师培训
地址:创业大街
消息摘要算法又称为散列算法,其核心在于散列函数的单向性。即通过散列函数可获得对应的散列值,但不可通过该散列值反推其原始信息。这是消息摘要算法的安全性的根本所在。消息摘要算法主要分为三大类:MD(MessageDigest,消息摘要算法)、SHA(Secure HashAlgorithm,安全散列算法)和MAC(MessageAuthentication Code,消息认证码算法)。MD5、SHA和HMAC分别是三大类消息摘要算法中的代表。拉勾IT课小编为大家分解
MD5和SHA
1.MD5算法是典型的消息摘要算法,其前身有MD2、MD3和MD4算法,它由MD4、MD3、MD2算法改进而来,1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA。
2.SHA家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512。SHA与MD算法不同之处主要在于摘要长度,SHA算法的摘要长度更长,安全性更高。
MD5和SHA在实现代码上大部分是一致的,只是指定的算法不一样。
import java.sec***ssageDigest;
import java.security.NoSuchAlgorithmException;

public class MdaUtil {
     
     /**
  * MD5/SHA消息摘要
  * @param content 数据
  * @param algorithm 消息摘要算法
  * @return
  * @throws NoSuchAlgorithmException
  */
  public static String messageDigestAlgorithm(String content, String algorithm) throws NoSuchAlgorithmException {
    MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
    byte[] result = messageDigest.digest(content.getBytes());
    StringBuilder sb = new StringBuilder();
    for(byte b : result){
        //转16进制
        String a = Integer.toHexString(b & 0xff);
        //长度为1时在高位补0
        if(a.length() == 1){
          a = "0" + a;
        }
        sb.append(a);
    }
    return sb.toString();
  }

  public static void main(String[] args) throws NoSuchAlgorithmException {
    System.out.println(messageDigestAlgorithm("消息摘要算法", "md5"));//b7c58f860f1add7de092b1f2931a3eb9
    System.out.println(messageDigestAlgorithm("消息摘要算法", "sha"));//ff0e2136bc6df62bbe0d9b6ad9d028852312aad5
  }
}
北京电脑/网络相关信息
4月23日
办公软件培训
平谷-平谷城区
4月19日
办公软件培训
平谷-平谷城区
4月11日
办公软件培训
平谷-平谷城区
4月9日
办公软件培训
平谷-平谷城区
4月7日
4月1日
注册时间:2020年08月20日
UID:706755
---------- 认证信息 ----------
手机已认证
查看用户主页