go-lang版本可进行字符串规范化



我正在做一个项目,其中一些字符串被散列。为了确保我总是得到正确的结果,我想在对它们进行散列之前对它们进行归一化。。。并且有一个Unicode规范包。到目前为止还不错。

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

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

你不能只存储文本的哈希吗?这样,当你需要它们时,你甚至不必对它们进行归一化和计算。

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

想想看:如果norm包被更改(例如,修复了一个错误)并产生了不同的输出(标准化文本),那么在没有产生旧输出的代码的情况下,你怎么能获得"旧"输出呢?仅通过具有旧版本的norm包。

另一方面,你说你需要计算哈希来验证数据没有被篡改。如果是这样的话,我看不出正常化的目的。如果原始文本发生了更改(例如,它被"编辑"了,但并没有真正更改,只是以规范化的形式重新保存),则可以在不进行规范化的情况下对文本进行哈希处理,这可以被视为"篡改"。

最新更新