【发布时间】:2013-01-26 19:35:24
【问题描述】:
在我的一项学校工作中,我需要使用确定性算法 (http://en.wikipedia.org/wiki/Deterministic_encryption) 来加密几个字段。
在这种特定情况下,我必须用布尔值对表进行加密。这很好,除了使用确定性算法这样做几乎没有用处。
为什么会这样? (你可能会问)
当我加密(例如)值“true”时,我总是得到“AB1”的密文,而当我加密值 false 时,我总是得到“SQ2”的密文。因此,我没有用值“真”和“假”填充表,而是用值“AB1”和“SQ2”填充表。 任何攻击者都会立即明白我的表存储布尔值,并且他很快就会发现 AB1=true 和 SQ2=false。
这是我想在作业中避免的。为了避免这个问题,我尝试使用具有某些属性的数字。例如,“真”的值被一个素数替换,而“假”的值被一个非素数替换。因此,我的表格将充满许多不同的素数和非素数。
如果不是为了一件小事,这将是一个可接受的解决方案:我们可以计算的素数数量是“有限的”(计算大素数需要很长时间)。在 10000000 个数字的区间中,只有 664579 是素数(只有 6.64579%)。
所以我考虑使用奇数而不是质数,但我不确定奇数的质量。我认为攻击者将能够从密码中检索“奇怪”的属性,从而进行攻击。
我对奇数的假设正确吗? 还有其他解决方案吗? 大家有什么想法吗?
如果有任何帮助或想法,我将不胜感激,提前感谢 Pedro。
【问题讨论】:
-
"因此,我的表将充满许多不同的素数和非素数。"这是如何确定的?
-
对
true使用奇数,对false使用偶数意味着您的布尔值由数字中的最低位表示。如果您随机选择其他位,如果数字足够大(比如 64 位),它应该是安全的。 -
@starblue 哇,我没想到。很棒的反馈,谢谢!如果您将此作为答案而不是评论发布,我会选择它作为我问题的最终答案:P
标签: cryptography boolean primes deterministic