好的 - 首先你正在编码一个“user_id”(听起来像用户名)这听起来很奇怪,我认为这是一个相对公开的信息 - 而不是密码或类似的秘密 - 但问题是真的是关于加密,所以我离题了......
任何加密算法的“足够强大”都是根据在没有密钥的情况下解密文本需要多长时间来评定的(假设您已经以一种好的方式隐藏了您的密钥)。除了经典的 One Time Pad 之外,没有任何算法是“完美的”——这是一个很好的学术示例,但在 99% 的情况下并不那么有用,因为它需要与加密数据相同大小的密钥空间,因此您将不断生成并存储新密钥——这引发了它自己的安全问题。
所以..任何现实的算法都被认为是“足够强大”,如果它需要更长的时间来解密没有密钥的材料而不是信息的价值。所以 - 如果信息是我明天的午餐计划,很可能我的加密算法可能只需要延迟攻击者 24 小时,到那时,事件就会结束,没关系,因为你找不到我不再有……但如果我的午餐是一些历史性事件或其他什么,这可能会很重要。
所以加密破解计算的因素包括: - 算法的弱点是什么 - 一些算法可以有更容易解密的弱密钥集,其他的可以证明增加一点价值(某些形式的 DES)
所以......在一个简单的算法中,破解时间可以是:
# of keys in key space X time to test a key
这通常取决于您可以合理地期望黑客拥有多少资源?一个小型组织可能有 10-50 台机器。一个民族国家可能有数百万。威胁的性质是什么——他们可以合理地拥有多少计算能力?您不一定认为它受到他们在百思买的购买力的限制——如果他们在技术上很复杂,他们就会在无辜的用户机器上拥有一个大规模并行的恶意软件僵尸网络来进行计算。