Java 将字符串与SHA-256相匹配后出现错误结果
我试图使用Java 将字符串与SHA-256相匹配后出现错误结果,java,android,string,character-encoding,sha256,Java,Android,String,Character Encoding,Sha256,我试图使用SHA-256散列字符串,但结果是错误的,并且包含特殊字符 代码: 结果字符串: ��Ё�L}e�/��Z���O+�,�]l�� 哈希过程正确,但结果由字节数组组成。要使其可读,请使用StringBuffer。作为转换的示例,请查看 StringBuffer sb=new StringBuffer(); for(int i=0;i
SHA-256
散列字符串,但结果是错误的,并且包含特殊字符
代码:
结果字符串:
��Ё�L}e�/��Z���O+�,�]l��
哈希过程正确,但结果由字节数组组成。要使其可读,请使用
StringBuffer
。作为转换的示例,请查看
StringBuffer sb=new StringBuffer();
for(int i=0;i
哈希过程正确,但结果由字节数组组成。要使其可读,请使用StringBuffer
。作为转换的示例,请查看
StringBuffer sb=new StringBuffer();
for(int i=0;i
我认为你的散列方式没问题。如果您希望在以下内容之后将其作为十六进制字符串:
import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
String hex = (new HexBinaryAdapter()).marshal(md.digest(password.getBytes(StandardCharsets.UTF_8)));
我觉得你的方式是好的。如果您希望在以下内容之后将其作为十六进制字符串:
import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
String hex = (new HexBinaryAdapter()).marshal(md.digest(password.getBytes(StandardCharsets.UTF_8)));
返回的数组是散列的原始字节,如果需要十六进制格式,则应进行检查。返回的数组是散列的原始字节,如果需要十六进制格式,则应进行检查。
import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
String hex = (new HexBinaryAdapter()).marshal(md.digest(password.getBytes(StandardCharsets.UTF_8)));