c# - 尝试压缩 Sha1 的大小,也许是制作唯一标识符的更好选择

标签 c# java php python uniqueidentifier

我有以下三条信息。群组名称、群组类型和群组排名。

举个简单的例子

“妈妈的猫”、“猫”、“Top10”

这个例子与我正在做的事情相去甚远,但你已经明白了基本的想法。

群组名称是大量可能的值(例如大约 20k),而群组类型和群组排名则较小(例如各 10 个)

尝试找到一种更好的方法来为这组事物提供一个简短的唯一标识符,而不是使用带有巨大丑陋 URL 的 sha1

还有更好的想法吗?

对所有语言解决方案开放,所以只是将很多程序员固定在这里,因为我想不出更好的标签来分配给它。

谢谢。

编辑:我不久前在其他地方找到的一个解决方案指出,获取 SHA-1 中的最后几个字符并将它们转换为十进制值。不确定这个想法有多可靠以及碰撞的可能性。

EDIT2:使用 mongoDB 并将此 sha1 值与成员一起存储在数据库中,以便目前轻松查询。尝试寻找替代解决方案来在单独的表/集合中创建自动增量字段,这意味着运行更新脚本时会出现更多查询。

最佳答案

对于 python 映射,您可以使用(grouptype、groupranking、groupname)作为字典键,或者您可以通过拆分具有 grouptype -> groupranking -> groupname 键的字典等内容来减小字典的大小。

为了生成唯一的 url,grouptype.rank.name 有什么问题,或者/作为分隔符有什么问题 - 您可以使用有效的 url 类型函数以 %nn 格式替换每个中的无效字符。

您可以使用urllib.quote('/'.join([baseurl, grouptype, groupranking, groupname])生成这样的路径甚至 baseurl + urllib.urlencode({'grouptype':grouptype,'groupranking':groupranking,'groupname':groupname}) - 后者将产生典型的查询格式:baseurl?grouptype=Whatever&....

关于c# - 尝试压缩 Sha1 的大小,也许是制作唯一标识符的更好选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17564244/

相关文章:

java - 通过JBDC获取在IBM DB2 V6R1 (AS400)上插入的行数

JavaDoc:在哪里向文档添加注释/备注?

php - 如何在 php/mysql 中显示数据库中的图像。如果使用 C#/Vb.net 将图像插入数据库

c# - 从 IIS 获取我托管的 Asp.Net 网站的运行 session 计数

使用 SHA256withRSA 算法验证 WSO2 API 网关 JWT 签名的 C# .NET 代码

java - 如何使用 Android 分页库传递 Intent 变量以进行改造

PHP - 强制 eval() 在全局范围内运行?

php - 如何在 PHP 中的子类继承方法中定义更严格的类型?

c# - 如何将文件从 ASP 页面移交给 C# 函数?

c# - 取消装箱可空类型 - 解决方法?