0

我需要根据输入值执行密集计算,这是一个最多 100 个字符的 ASCII 字符串。由于计算量大且时间很长,我想为某个输入值缓存​​我的结果。

如果不是细节,我的密集计算结果将是完全可缓存的(相同的输入总是产生相同的输出):我不能将输入值用作我的缓存的键,因为它是一个敏感字符串,我是不允许将其存储在任何地方超过严格需要的时间。

我考虑过使用加密散列函数并使用散列值,但我不能承认冲突;我可以将散列函数 codomain 扩展为比输入值长度更大甚至更大(10000 个字符散列就可以了),但我需要散列函数既是完美的又是单向的

我找到了任何一种散列函数的例子,而不是两者兼有的函数。

任何想法?

4

1 回答 1

4

您可以使用任何非对称密码(例如 RSA)而无需解密密钥。通过这种方式,您可以对消息进行加密,并且不会发生冲突,因为理论上可以使用解密密钥将其解密回来。但实际上它无法解密,因为缺少解密密钥。因此,您的变换将是单向的,并且没有冲突。

但是,重要的是:不要使用现代的 2 级方案,其中加密的随机会话密钥。这种机制不能保证无冲突。相反,将您的消息拆分为适当大小的块,并以 ECB 模式加密每个块。

于 2013-11-07T13:30:34.540 回答