在我的一项学校工作中,我需要使用确定性算法 (http://en.wikipedia.org/wiki/Deterministic_encryption) 来加密几个字段。
在这种特定情况下,我必须用布尔值加密一个表。这很好,除了使用确定性算法这样做几乎没有用处。
为什么呢?(你可能会问)
碰巧当我加密(例如)值“true”时,我总是得到“AB1”的密文,而当我加密值 false 时,我总是得到“SQ2”的密文。因此,我没有用值“真”和“假”填充表,而是用值“AB1”和“SQ2”填充表。任何攻击者都会立即明白我的表存储布尔值,他很快就会发现 AB1=true 和 SQ2=false。
这是我想在作业中防止的。为了避免这个问题,我尝试使用具有某些属性的数字。例如,“真”的值被一个素数替换,而“假”的值被一个非素数替换。因此,我的表将充满许多不同的素数和非素数。
如果不是为了一件小事,这将是一个可以接受的解决方案:我们可以计算的素数是“有限的”(计算大素数需要很长时间)。在 10000000 个数字的区间中,只有 664579 是素数(只有 6.64579% )。
所以我考虑使用奇数而不是质数,但我不确定奇数的质量。我认为攻击者将能够从密码中检索“奇怪”的属性,从而进行攻击。
我对奇数的假设正确吗?还有其他解决方案吗?你们有什么想法吗?
我真的很感激任何帮助或想法,提前佩德罗。