QDomDocument和QCryptographicHash问题

时间:2012-10-05 16:02:59

标签: xml qt hash

使用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来读取数据并对其进行修改,一切都很顺利。我的应用程序加密我的xml文件,如果用户退出ant重新运行后解密它,但在解密后我得到这个:

<?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)。

1 个答案:

答案 0 :(得分:1)

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

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