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

Java中WEAK_PASSWORD_HASH的修改策略的更多相关文章

  1. java中有界队列的饱和策略(reject policy)

    文章目录 AbortPolicy DiscardPolicy DiscardOldestPolicy CallerRunsPolicy 使用Semaphore java中有界队列的饱和策略(rejec ...

  2. java中内存分配策略及堆和栈的比较

    Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间 ...

  3. linux centos中添加删除修改环境变量,设置java环境变量

    前言 安装完软件必要添加环境变量.指令很少,然而长时间不写就会不自信:我写的对吗?于是百度开始,于是发现又是各有千秋.好吧,好记星不如烂笔头.当然,最重要的是,百度出来的都他妈的是如何添加环境变量,只 ...

  4. Map java中的map 如何修改Map中的对应元素

    Map java中的map 如何修改Map中的对应元素 Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象.         Map的接口         Map ...

  5. 分析java中clone()方法 (转载+修改)

    Java中的clone() 方法 java所有的类都是从java.lang.Object类继承而来的,而Object类提供下面的方法对对象进行复制. protected native Object c ...

  6. 【java虚拟机序列】java中的垃圾回收与内存分配策略

    在[java虚拟机系列]java虚拟机系列之JVM总述中我们已经详细讲解过java中的内存模型,了解了关于JVM中内存管理的基本知识,接下来本博客将带领大家了解java中的垃圾回收与内存分配策略. 垃 ...

  7. java中的策略设计模式

    本文主要讲java中的策略模式:一个可以根据不同的传入参数而具有不同行为的方法,就叫策略模式.概念可能有点不好理解,具体看下面代码: import java.util.Arrays; /** * 策略 ...

  8. Java中如何修改Jar中的内容

    一.摘要 好长时间没写blog了,之前换了一家公司.表示工作更有战斗力了,可惜就是没时间写文章了.在这段时间其实是遇到很多问题的,只是都是记录下来,并没有花时间去研究解决.但是这周遇到这个问题没办法让 ...

  9. Java中的String真的无法修改吗

    Java中String一旦赋值将无法修改,每次对String值的修改都是返回新的String. 如何在不创建新的String对象的情况下,对String的值进行修改呢? String类中的包含一个字段 ...

随机推荐

  1. 3、实战:OutOfMemoryError异常

    目的:第一,通过代码验证Java虚拟机规范中描述的各个运行时区域存储的内容:第二,工作中遇到实际的内存溢出异常时,能根据异常的信息快速判断是哪个区域的内存溢出,知道什么样的代码可能会导致这些区域内存溢 ...

  2. My introduction

    Vistors 访客统计

  3. 安装MinGW出现 mingw-get: *** ERROR *** Get package:

    个人的解决方法: 1.手机开个热点让电脑连上. 2.在Setting里面讲proxy关闭.

  4. Redis Cluster 介绍与搭建

    转:http://blog.csdn.net/men_wen/article/details/72853078 Redis Cluster 介绍与搭建 1. Redis Cluster介绍 Redis ...

  5. [redis读书笔记] 第二部分 单机数据库 RDB持久化

    内存中的rdb是会存为文件以做到RDB持久化的.RDB文件时一个二进制文件. 一 载入与存储 文件的载入是在server启动时进行的(rdbload()),因为AOF的更新频率比RDB高,所以如果AO ...

  6. 跨域的两种解决方法jsonp和CORS

    1.跨域 什么是跨域? 当你请求的url是不同源的数据的时候,浏览器一般会抛出请求跨域的错误,如下图: 造成跨域的原因? 即你违反了浏览器的同源策略的限制=>阻止一个域的js脚本和另外一个域的内 ...

  7. webpack--介绍、安装及入门

    最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载.下面的网页代码,相信很多人都见过. <scr ...

  8. 与WinRT组件进行操作

    1,原理: WinRT是一个新的类库,应用程序可以用它访问操作系统的功能. 在内部,WinRT以组件的形式实现.COM Component Object Model- WinRT使用.net元数据来描 ...

  9. 【干货】Python基础——列表

    1.列表的创建 列表是多个.有序.可重复的元素集合,数据包装在“[]”里,列表中的元素可以是任何类型,甚至可以是一个列表.创建列表有两种方法: A 对于规模比较小的列表可以直接定义和赋值,列表可以嵌套 ...

  10. 10.python内置模块之os模块

    os模块的作用:os 模块提供了非常丰富的方法用来处理文件和目录(管理和维护目录以及文件). os.path模块的作用:主要用于获取文件的属性(管理路径的(物理地址)). 小生总结了一些平时常用到的属 ...