北京

点击搜索

发布

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

区域:
北京 > 海淀 > 中关村
类别:
软件工程师培训
地址:
创业大街
消息摘要算法又称为散列算法,其核心在于散列函数的单向性。即通过散列函数可获得对应的散列值,但不可通过该散列值反推其原始信息。这是消息摘要算法的安全性的根本所在。消息摘要算法主要分为三大类: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
  }
}
查看更多北京电脑/网络信息

免责声明:此信息系发布者(UID:706755)自行发布,本站是服务平台,仅提供信息存储空间服务,该信息内容的真实性及合法性由该发布者完全负责。

© lieju.com 联系我们