例如,许多软件使用的许可证 key 。我曾想过对一个序列进行密码签名,所以我可能有 4 个字节用于 ID,8 个字节用于签名,但我找不到合适的算法。
我需要的是攻击者无法轻易生成,但存储在大约 20 个 ASCII 字节内的东西。我还需要对独特性充满信心。这不需要完全安全,只需针对偶然的攻击进行保护即可。
注意:我在 appengine 上用 java 执行此操作。
最佳答案
只需生成一个 GUID对于每个 ID 并跟踪您在数据库中生成的 ID。 GUID 的范围如此之大,以至于每个都将是唯一的。它不是密码学的,所以任何拥有足够多的你生成的人的人都有可能产生匹配,但我认为可能性仍然很小。
GUID 是 128 位,可以使用 Base64 编码为 23 字节.
关于algorithm - 如何生成一组易于检查但难以欺骗的(短)唯一标识符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14824236/