zoukankan      html  css  js  c++  java
  • Hmac算法

    Hmac算法就是一种基于密钥的消息认证码算法,它的全称是Hash-based Message Authentication Code,是一种更安全的消息摘要算法。

    Hmac算法总是和某种哈希算法配合起来用的。例如,我们使用MD5算法,对应的就是HmacMD5算法,它相当于“加盐”的MD5。

    因此,HmacMD5可以看作带有一个安全的key的MD5。使用HmacMD5有如下好处:

    • HmacMD5使用的key长度是64字节,更安全;
    • Hmac是标准算法,同样适用于SHA-1等其他哈希算法;
    • Hmac输出和原有的哈希算法长度一致。

    可见,Hmac本质上就是把key混入摘要的算法。验证此哈希时,除了原始的输入数据,还要提供key。

    为了保证安全,我们不会自己指定key,而是通过Java标准库的KeyGenerator生成一个安全的随机的key。下面是使用HmacMD5的代码:

    public class TestDemo {
         public static void main(String[] args) throws Exception {
                 //通过名称HmacMD5获取KeyGenerator实例
                KeyGenerator keyGen = KeyGenerator.getInstance("HmacMD5");
                //通过KeyGenerator创建一个SecretKey实例
                SecretKey key = keyGen.generateKey();
                // 打印随机生成的key:
                byte[] skey = key.getEncoded();
                System.out.println(new BigInteger(1, skey).toString(16));
                // 通过名称HmacMD5获取Mac实例
                Mac mac = Mac.getInstance("HmacMD5");
                //用SecretKey初始化Mac实例
                mac.init(key);
                //对Mac实例反复调用update(byte[])输入数据
                mac.update("HelloWorld".getBytes("UTF-8"));
                //调用Mac实例的doFinal()获取最终的哈希值
                byte[] result = mac.doFinal();
                System.out.println(new BigInteger(1, result).toString(16));
            }
             
         
              
    }
  • 相关阅读:
    scala中的注解
    scala中的表达式
    scala中枚举
    spark sql建表的异常
    hive和sequoiadb对接的问题
    java IO的总结
    Spark的序列化
    pentaho和spark-sql对接
    英语口语练习系列-C28-海滨-辨别身份-悬崖边的树
    2018-12-4-今日总结
  • 原文地址:https://www.cnblogs.com/aikutao/p/12156276.html
Copyright © 2011-2022 走看看