algorithm - 如何生成一组易于检查但难以欺骗的(短)唯一标识符?

标签 algorithm security

例如,许多软件使用的许可证 key 。我曾想过对一个序列进行密码签名,所以我可能有 4 个字节用于 ID,8 个字节用于签名,但我找不到合适的算法。

我需要的是攻击者无法轻易生成,但存储在大约 20 个 ASCII 字节内的东西。我还需要对独特性充满信心。这不需要完全安全,只需针对偶然的攻击进行保护即可。

注意:我在 appengine 上用 java 执行此操作。

最佳答案

只需生成一个 GUID对于每个 ID 并跟踪您在数据库中生成的 ID。 GUID 的范围如此之大,以至于每个都将是唯一的。它不是密码学的,所以任何拥有足够多的你生成的人的人都有可能产生匹配,但我认为可能性仍然很小。

GUID 是 128 位,可以使用 Base64 编码为 23 字节.

关于algorithm - 如何生成一组易于检查但难以欺骗的(短)唯一标识符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14824236/

相关文章:

java - 如何在java中生成n个?

java - S3-读取: process file in secure manner

security - 如何验证 JavaScript 库?

C++:如何处理未使用的空 vector 消耗的 RAM?

algorithm - 为什么这个关于红黑二叉搜索树的说法是正确的?

algorithm - 生成随机隧道

java - 从 jsvc 到 Jetty(或其他应用服务器)的安全消息

java - 查找数组中的数字

security - 在没有 SonataUserBundle 的情况下集成 SonataAdminBundle + FOSUserBundle 以确保 symfony 2.3 中的安全性?

security - 如何限制对codeigniter文件夹中文件的访问