Java 如何使用SHA-256散列字符串

Java 如何使用SHA-256散列字符串,java,string,hash,sha256,Java,String,Hash,Sha256,我正在尝试使用SHA-256对用户的字符串类型密码进行哈希运算 我使用SHA-256对字符串进行散列,如下所示 为了将btye数组转换为字符串,我使用了以下命令 当我将doc2打印到输出时,我得到的是垃圾 �x����AA@�]�"#�a��z���a� 我做错了什么???如何使用SHA-256散列字符串并将其转换回字符串???这将触发散列的十六进制表示 String s = DatatypeConverter.printHexBinary(hash) 您无法从散列中获取原始字符串,SHA

我正在尝试使用SHA-256对用户的字符串类型密码进行哈希运算

我使用SHA-256对字符串进行散列,如下所示

为了将btye数组转换为字符串,我使用了以下命令

当我将doc2打印到输出时,我得到的是垃圾

�x����AA@�]�"#�a��z���a�

我做错了什么???如何使用SHA-256散列字符串并将其转换回字符串???

这将触发散列的十六进制表示

String s = DatatypeConverter.printHexBinary(hash)

您无法从散列中获取原始字符串,SHA256返回纯二进制输出,每个字符从00到FF的所有值的可能性基本相同

对于文本输出,您需要将其转换为文本形式,如


从加密合理的散列(或大多数散列,甚至是加密不合理的散列)返回到原始输入的唯一方法是在输入后对输入应用散列,直到得到相同的结果-即原始输入或冲突。

散列是单向函数。如果您的目的是尝试从哈希中获取密码,则不可能。未定义DatatypeConverter
�x����AA@�]�"#�a��z���a�
String s = DatatypeConverter.printHexBinary(hash)
byte[] encodedBytes = Base64.encodeBase64("Test".getBytes());
System.out.println("encodedBytes " + new String(encodedBytes));