在采用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勉

最新文章

  1. 最快让你上手ReactiveCocoa之基础篇
  2. Standard C 语言标准函数库介绍
  3. [翻译]opengl扩展教程2
  4. PHP通过串口发短信
  5. 升级IOS 9 和 XCode 7 引起的问题
  6. C#中使用SelectionStart属性指定输入框光标位置
  7. sql - and - or
  8. 在Struts2中使用Uploadify组件上传文件
  9. hdu--1077--Catching Fish
  10. spring装配Bean过程
  11. java基础(八)-----深入解析java四种访问权限
  12. EF架构~migration对mysql数据库的迁移
  13. 【Python 02】计算机与程序设计
  14. java虚拟机的学习书籍推荐
  15. Delphi ClientDataSet 主从结构 BUG
  16. 阿里云人脸识别测试接口出错 返回Body:{ &quot;errno&quot;: 1031, &quot;err_msg&quot;: &quot;Invalid Image URL.&quot;, &quot;request_id&quot;: &quot;cdbe2927-e1bb-4eb1-a603-8fcd4b0b7fc8&quot; }
  17. sparkStreaming消费kafka-1.0.1方式:direct方式(存储offset到zookeeper)
  18. ORA-01940:无法删除当前已连接的用户
  19. WiFi 干扰器,有时间可以去试试呦!
  20. linux学习记录.4.常用命令

热门文章

  1. CVE-2019-0199:Apache Tomcat DDOS
  2. 小程序websocket心跳库——websocket-heartbeat-miniprogram
  3. 20200116--python学习第十天
  4. Ansible 学习目录
  5. zabbix-agentd配置文件详解
  6. 大数据运维尖刀班 | 集群_监控_CDH_Docker_K8S_两项目_腾讯云服务器
  7. mac下搭建http服务器(apache+php),使用homebrew升级php
  8. 双向绑定Proxy VS Object.defineProperty
  9. Python基础之基础知识
  10. 第一天,初学Markdown