代码之家  ›  专栏  ›  技术社区  ›  mihi

在移动设备上加密“数字”的算法,这样一个错误的密码只会显示错误的数字,而不会显示错误的线索

  •  1
  • mihi  · 技术社区  · 14 年前

    • 每个数字都有一个与用户相关联的名称,该名称以明文形式存储,但可用于干扰加密
    • 当攻击者知道其中一个或几个数字时,获取其他数字的最简单方法应该是强制输入密码,直到数字解密到该值。
    • 它可以选择支持其他字符集(即0-9a-f或0-9a-zA-Z)-字符集将与条目一起存储,当然,每次错误的解密将只显示这些字符

    由于设备上有SHA-1,我想到了以下几点:

    • 获取要加密的数字,并测试可以添加的频率 10**digitcount 以使其仍然适合该范围,即加密数字555时,它是64,即65555>65536,但加密222时,它是65,即65222<65536。
    • number*(10**digitcount) 到要加密的数字
    • 结果应该是一个平均分布在整个字节范围内的数字。
    • name+password ,切掉第一个(或最后一个)字节—尽可能多地覆盖上一步的数字—并将它们与上一步的数字异或。
    • 存储Xor ed SHA1、数字长度和名称。
    • 很容易适应10以外的其他基,可以满足上述可选要求。

    (有没有(像语音一样自由的)针对移动设备的应用程序实现了类似的算法?)

    (或者是否有其他stackexchange网站更适合这个问题?)

    编辑

    3 回复  |  直到 14 年前
        1
  •  0
  •   hroptatyr    14 年前

    只是为您提供一个简单方法的想法:在有限循环群中使用好的老DLP。

    补充说明: cipher = plain + key mod 10^number-of-digits 那么很明显: cipher - key mod 10^number-of-digits = plain 再一次,它总是在设计的目标间隔内。

        2
  •  0
  •   Kaelin Colclasure    14 年前

    只需将该数字存储为ASCII字符串,与您计算的SHA-1散列中的第一个位数字节进行异或运算。

    然后在解码时,强行将超出范围的任何“数字”解码回有效数字。(例如,如果有效数字是'0'-'9',只需减去'0',模数10,再加上'0'

        3
  •  0
  •   Woot4Moo    14 年前

    我看到的所有这些明显的缺陷是,你只是加密密码。人们一次又一次地注意到,只有对“重要”信息进行加密才是陷入麻烦的可靠途径。另外,我不认为你能得到蛮力的技术在这里你更有可能失去一个生日攻击。我记得这和暴力不同,如果我错了,请随时纠正我。另外,密码错误的线索是您没有被授予访问权限。