go lang version-able string normalization

时间:2017-01-24 21:06:51

标签: go unicode

我正在研究一些字符串经过哈希处理的项目。为了确保我总能得到正确的结果,我想在哈希之前将它们标准化。 ......还有Unicode规范包。到现在为止还挺好。

我不想存储规范化的表单,已经存储了原始数据 - 我认为客户喜欢它。我想多年后如果我被要求计算相同字符串的哈希值以得到相同的结果。现在,如果标准有所改进,或者使用最新版本的库修复了错误,则会产生不同的结果。我不在乎先前的结果是不是很完美 - 我只想要相同的结果。

我的问题是:什么可能是强制执行一致性的好方法 - 避免我自己的实现。

1 个答案:

答案 0 :(得分:0)

你不能只存储文本的哈希值吗?这样,您甚至无需在需要时进行标准化和计算。

如果您不能或不想:您不必使用最新版本的规范化软件包。您可以选择当前的最新版本(或您选择的任何提交),并将其放在供应商文件夹中。所以你也可以在几年后使用这个“固定”版本。有关销售详细信息,请参阅Package version management in Go 1.5

考虑一下:如果norm包被更改(例如修复了一个错误)并产生了不同的输出(标准化文本),那么你怎么能够获得“旧”输出而不必产生旧输出的代码?只有拥有旧版norm包。

另一方面,您说您需要计算哈希以验证数据是否未被篡改。如果是这样,我没有看到规范化的目的。如果原始文本被更改(例如,它被“编辑”,但它没有真正改变,只是以规范化形式重新保存),您可以对文本进行散列而不进行标准化,这可以被视为“篡改”。 / p>