zoukankan      html  css  js  c++  java
  • 摘要算法MessageDigest

    Apache提供的Commons-codec中对MessageDigest进行了封装,可以直接使用,如果想自己实现,MessageDigest位于java.security包下。

    摘要算法同样不是加密算法,因为经过摘要计算之后,数据往往无法还原,通常用于保证数据传输的完整性。

    在数据传输中,对所有的数据进行摘要计算,另一台电脑获取数据之后,进行同样的摘要计算,如果结果相同,那么说明本次接收到完整的数据。

    在一些个性化的设计中,也有使用摘要算法生成密钥的做法,因为长度刚好32位,很适合做AES、DES的密钥。

    MD5摘要

    MD5算法生成字符串,结果分为16位和32位,数据加密的结果,还需要进行16进制编码,Hex可以参考Commons-codec

    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    
    public class MD5 {
        public static byte[] digest(byte[] data) {
            try {
                MessageDigest md5 = MessageDigest.getInstance("MD5");
                md5.update(data);
                return md5.digest();
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
                return null;
            }
        }
    
        public static String hexBit32(String data) {
            return Hex.encodeToString(digest(data.getBytes()));
        }
    
        public static String hexBit16(String data) {
            return hexBit32(data).substring(8, 24);
        }
        
        public static void main(String[] args) {
            System.out.println(MD5.hexBit16("12121212"));
        }
    } 

    常用的摘要算法

    因为是按照接口标准实现的,修改上述代码中MessageDigest.getInstance()这一行代码,即可实现其他加密方法。

        public static final String MESSAGE_DEGEST_MD2 = "MD2";
        public static final String MESSAGE_DEGEST_MD5 = "MD5";
        public static final String MESSAGE_DEGEST_SHA = "SHA";
        public static final String MESSAGE_DEGEST_SHA_224 = "SHA-224";
        public static final String MESSAGE_DEGEST_SHA_256 = "SHA-256";
        public static final String MESSAGE_DEGEST_SHA_384 = "SHA-384";
        public static final String MESSAGE_DEGEST_SHA_512 = "SHA-512";
  • 相关阅读:
    A Node Influence Based Label Propagation Algorithm for Community detection in networks 文章算法实现的疑问
    Fast Newman-FN算法以及模块度定义介绍
    Label Propagation Algorithm LPA 标签传播算法解析及matlab代码实现
    设计一个smartnic
    Intel GEN11 GPU
    Intel GEN9 GPU
    Shared Virtual Memory (SVM) Functions
    connect via ssh to virtualbox guest vm without knowing ip address
    smartnic
    技术精品翻译
  • 原文地址:https://www.cnblogs.com/chenss15060100790/p/9080018.html
Copyright © 2011-2022 走看看