字符编码会影响MD5之类的哈希算法吗?

时间:2013-06-24 20:36:04

标签: character-encoding md5 checksum

我遇到一个问题,客户端计算文件的校验和,然后通过套接字将其与文件一起发送到服务器。服务器重新计算文件的校验和,并将其与传递的校验和进行比较。调试输出如下

Server calculated checksum: 53613E7F8AB289BDDC1EBF1E0929F1FD
<?xml version="1.0" encoding="utf-16"?>
<TestHistory>
  <TestHistory>
    <SerialNumber>13231312</SerialNumber>
    <PrinterFamily>Tabletop</PrinterFamily>
    <StartTime>1371515505</StartTime>
    <EndTime>1371515510</EndTime>
    <TestStation>PreCal</TestStation>
    <TestResult>P</TestResult>
    <FailureResult>
    </FailureResult>
    <NetworkDomainName>zgn</NetworkDomainName>
    <TestPCName>01-93RZheng</TestPCName>
    <TestSoftwareVersion>0.0.7</TestSoftwareVersion>
    <TestSite>Jabil</TestSite>
    <MAC_BT>00-G0-D0-86-CB-F7</MAC_BT>
    <MAC_WiFi>00-S0-D0-26-BD-X7</MAC_WiFi>
    <MAC_Wired>00-B0-D0-81-BB-L7</MAC_Wired>
    <SKU>1rf3</SKU>
    <WorkOrder>1313231</WorkOrder>
    <Firmware_MLB>3.1321.bd2</Firmware_MLB>
    <DateEntered />
    <PrintheadMFGInfo>ee1</PrintheadMFGInfo>
    <PrintheadSN>13-21</PrintheadSN>
  </TestHistory>
</TestHistory>

Client calculated checksum: 0AFE9F429DE4C6E675297FA861C0CCA9
<?xml version="1.0" encoding="utf-16"?>
<TestHistory>
  <TestHistory>
    <SerialNumber>13231312</SerialNumber>
    <PrinterFamily>Tabletop</PrinterFamily>
    <StartTime>1371515505</StartTime>
    <EndTime>1371515510</EndTime>
    <TestStation>PreCal</TestStation>
    <TestResult>P</TestResult>
    <FailureResult>
    </FailureResult>
    <NetworkDomainName>zgn</NetworkDomainName>
    <TestPCName>01-93RZheng</TestPCName>
    <TestSoftwareVersion>0.0.7</TestSoftwareVersion>
    <TestSite>Jabil</TestSite>
    <MAC_BT>00-G0-D0-86-CB-F7</MAC_BT>
    <MAC_WiFi>00-S0-D0-26-BD-X7</MAC_WiFi>
    <MAC_Wired>00-B0-D0-81-BB-L7</MAC_Wired>
    <SKU>1rf3</SKU>
    <WorkOrder>1313231</WorkOrder>
    <Firmware_MLB>3.1321.bd2</Firmware_MLB>
    <DateEntered />
    <PrintheadMFGInfo>ee1</PrintheadMFGInfo>
    <PrintheadSN>13-21</PrintheadSN>
  </TestHistory>
</TestHistory>

在输出的文件部分使用标准差异工具表明两个文件没有差异,这使我相信编码或其他因素导致校验和不匹配。

1 个答案:

答案 0 :(得分:3)

是;当然可以。

哈希算法对原始字节进行操作。

如果要散列字符串,则需要以某种方式将字符转换为字节。

不同的编码会导致不同的字节。

此外,每个字符都会提供影响哈希的字节,甚至包括<?xml等字符。