【发布时间】:2012-08-11 23:51:50
【问题描述】:
所以现在,我的 Java 代码正在创建与我们的 Perl 代码不同的 SHA-256 哈希,但仅在 UTF8 字符起作用时。我做了一些调试,发现名称 Jörg 的 byte[] 表示在语言中如下所示:
Java 74、-61、-74、114、103
Perl 74、195、182、114、103
可能导致哈希值不同吗?看起来 Java 使用有符号字节,而 Perl 使用无符号字节。如果需要/要求提供更多信息!
谢谢!
【问题讨论】:
-
“看起来 Java 使用有符号字节,而 Perl 使用无符号字节。” - 你在那里回答了你自己的问题。使用
theByte & 0xFF获取未签名版本作为 int。 -
但是,当我使用 MessageDigest (SHA-256) 对字符串进行哈希处理时,它会导致差异吗?
-
只是好奇,当您说“我的 Java 代码正在创建”时,您的意思是您编写了自己的哈希实现吗?
-
转换为
unsigned byte[]。 -
我们发现了问题。最终与签名/未签名问题无关。
标签: java perl encoding utf-8 character-encoding