1

正在使用QCryptographicHash哈希传递并将其保存在 XML 文件中,我的问题是当我使用QDomDocument读取和更新 xml 文件中的其他元素时,元素密码会更改,我不知道如何更改。

请有任何帮助!

这是我的带有正确数据的 xml 文件

<?xml version='1.0' encoding='UTF-8'?>
<Folders>
 <folder DriveL="" Mounted="false" PassW="!Å?L,-;©Óñn?Ãs?N·¦ø" Path="C:\MyProjects\DiskCrypt\testFolder\TestFolder"/>

当我需要更新QDomDocument用于读取数据和修改数据的驱动器号时,一切正常。如果用户退出 ant 重新运行后解密,我的应用程序会加密我的 xml 文件,但在解密后我得到以下信息:

<?xml version='1.0' encoding='UTF-8'?>
<Folders>
 <folder DriveL="" Mounted="false" PassW="!??L,-;???n??s?N???" Path="C:\MyProjects\DiskCrypt\testFolder\TestFolder"/>
</Folders>

PassW应该是这样,"!Å?L,-;©Óñn?Ãs?N·¦ø"但在加密之后"!??L,-;???n??s?N???",我使用简单的算法进行加密和解密(AES 128)。

4

1 回答 1

1

为避免文本编码问题并使您的 XML 文件易于阅读,切勿将二进制数据直接放入 XML 文档中。请改用 base64 或十六进制编码。

由于QCryptographicHash以二进制形式生成哈希,因此您必须调用.toHex()从中获得的字节数组。(Base64 也可以,甚至更小,但哈希的十六进制编码是使它们可读的“默认”方式。)

于 2012-10-06T10:48:20.460 回答