博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HMAC 算法
阅读量:6643 次
发布时间:2019-06-25

本文共 1171 字,大约阅读时间需要 3 分钟。

hot3.png

用途

HMAC 算法主要用于身份验证,用法如下:

  1. 客户端发出登陆请求
  2. 服务器返回一个随机值,在会话中保存这个随机值
  3. 客户端将该随机值作为密钥,用户密码进行hmac运算,递交给服务器
  4. 服务器读取数据库中的用户、密码,利用密钥做和客户端一样的hmac运算,然后与用户发送的结果比较,如果一致,则用户身份合法

好处是,即使黑客截获了我们发送的数据,也只是能得到hmac加密过后的结果,由于不知道密钥,根本不可能获取到用户密码,从而保证了安全性。

HMAC的种类

算法种类                摘要长度HmacMD5                 128HmacSHA1                160HmacSHA256              256HmacSHA384              384HmacSHA512              512

HMAC的使用

如果要使用HMAC算法,需要生成一个密钥。

比如可以用JDK 自带的keyGenerator。

public static byte[] getSecretKey() throws Exception {        KeyGenerator keyGenerator = KeyGenerator.getInstance("HmacMD5"); // 可填入 HmacSHA1,HmacSHA256 等        SecretKey key = keyGenerator.generateKey();                byte[] keyBytes = key.getEncoded();        return keyBytes;    }

得到密钥后,就可以执行消息摘要算法。

public static String encryptHmac(byte[] key, byte[] data) throws Exception {    SecretKey secretKey = new SecretKeySpec(key, "HmacMD5");    Mac mac = Mac.getInstance("HmacMD5");    mac.init(secretKey);    byte[] resultBytes = mac.doFinal(data);    String resultString = byteToHexString(resultBytes);    return resultString;}

 

参考:

http://www.jianshu.com/p/3fe2add1eb42

转载于:https://my.oschina.net/pingjiangyetan/blog/1590590

你可能感兴趣的文章
【三】Centos7.4 安装Docker
查看>>
拜腾与博世将在动力系统、驾驶员辅助等方面展开重点合作
查看>>
国资入场,P2P网贷平台星火钱包千万级A+轮融资
查看>>
windows server21012 r2 密钥
查看>>
北大发布新零售之城发展指数报告,上海超北京成榜首
查看>>
python urllib爬取网页编码问题
查看>>
JMS的常用方法
查看>>
隐私与机器学习,二者可以兼得吗?
查看>>
DNS原理概念详解
查看>>
shell数组的使用
查看>>
深入理解C语言的预编译指令之 include
查看>>
Performance Monitoring Per RDM and HBA
查看>>
新瓶如何和平改造老酒?(野生项目笔记01)
查看>>
Python实现MySQL DBA小工具一例
查看>>
YodaOS 中是如何生成 API 的?
查看>>
Android 中Fragment的自动重建
查看>>
在 iOS 平台实现Ping 和 traceroute
查看>>
小猿圈python学习-嵌套&匿名&高阶函数
查看>>
element-ui 版本升级对比
查看>>
js 整理
查看>>