Java中WEAK_PASSWORD_HASH的修改策略
2024-10-08 08:34:06
在采用SHA-256对数据进行加密时,我们可以直接采用下面的方式进行处理:
public static String encodeBySha256(String content) {
String encode = "";
try {
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
messageDigest.update(content.getBytes("UTF-8"));
encode = bytesToHex(messageDigest.digest());
} catch (Exception e) {
System.out.println(e.getMessage());
}
return encode;
} public static String bytesToHex(byte... src) {
if (src == null || src.length <= 0) {
return null;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < src.length; i++) {
int value = src[i] & 0xFF;
String hexValue = Integer.toHexString(value);
if (hexValue.length() < 2) {
sb.append(0);
}
sb.append(hexValue);
}
return sb.toString();
}
上述代码能够实现对数据的SHA-256加密,但是会在encode = bytesToHex(messageDigest.digest());这一行提示WEAK_PASSWORD_HASH问题,这主要是因为不适宜直接调用messageDigest.digest()方法。那如何解决呢,我们可以采用反射的方式来处理,直接看下面修改后的代码:
public static String encodeBySha256(String content) {
String encodeString = "";
try {
Class<?> mdClass = Class.forName("java.security.MessageDigest");
Method method = mdClass.getMethod("getInstance", String.class);
MessageDigest messageDigest = (MessageDigest) method.invoke(null, "SHA-256");
messageDigest.update(content.getBytes("UTF-8"));
method = mdClass.getMethod("digest");
byte[] bytes = (byte[]) method.invoke(messageDigest);
encodeString = bytesToHex(bytes);
} catch (Exception exception) {
System.out.println(exception.getMessage());
}
return encodeString;
}
经过上述修改后,就不再报WEAK_PASSWORD_HASH的问题。
延伸:若是采用MD5的加密方式的话,只需要在method.invoke(null, "SHA-256")修改为method.invoke(null, "MD5")即可。
------20200117勉
最新文章
- 最快让你上手ReactiveCocoa之基础篇
- Standard C 语言标准函数库介绍
- [翻译]opengl扩展教程2
- PHP通过串口发短信
- 升级IOS 9 和 XCode 7 引起的问题
- C#中使用SelectionStart属性指定输入框光标位置
- sql - and - or
- 在Struts2中使用Uploadify组件上传文件
- hdu--1077--Catching Fish
- spring装配Bean过程
- java基础(八)-----深入解析java四种访问权限
- EF架构~migration对mysql数据库的迁移
- 【Python 02】计算机与程序设计
- java虚拟机的学习书籍推荐
- Delphi ClientDataSet 主从结构 BUG
- 阿里云人脸识别测试接口出错 返回Body:{ ";errno";: 1031, ";err_msg";: ";Invalid Image URL.";, ";request_id";: ";cdbe2927-e1bb-4eb1-a603-8fcd4b0b7fc8"; }
- sparkStreaming消费kafka-1.0.1方式:direct方式(存储offset到zookeeper)
- ORA-01940:无法删除当前已连接的用户
- WiFi 干扰器,有时间可以去试试呦!
- linux学习记录.4.常用命令
热门文章
- CVE-2019-0199:Apache Tomcat DDOS
- 小程序websocket心跳库——websocket-heartbeat-miniprogram
- 20200116--python学习第十天
- Ansible 学习目录
- zabbix-agentd配置文件详解
- 大数据运维尖刀班 | 集群_监控_CDH_Docker_K8S_两项目_腾讯云服务器
- mac下搭建http服务器(apache+php),使用homebrew升级php
- 双向绑定Proxy VS Object.defineProperty
- Python基础之基础知识
- 第一天,初学Markdown