我需要为给定的唯一字符串生成唯一记录ID。
我尝试使用UUID格式,这似乎很好。
但我们觉得它太长了。
所以我们需要缩短UUID字符串9f218a38-12cd-5942-b877-80adc0589315。通过删除“-”可以节省4个字符。从UUID中删除哪个部分是最安全的?我们不需要通用唯一标识符,但我们想使用UUID作为源,但缩短字符串。
我们需要特定于站点/数据库(SQL Server / ADO.NET数据服务)的唯一ID。
任何语言的示例或想法都可以。
提前感谢。
我需要为给定的唯一字符串生成唯一记录ID。
我尝试使用UUID格式,这似乎很好。
但我们觉得它太长了。
所以我们需要缩短UUID字符串9f218a38-12cd-5942-b877-80adc0589315。通过删除“-”可以节省4个字符。从UUID中删除哪个部分是最安全的?我们不需要通用唯一标识符,但我们想使用UUID作为源,但缩短字符串。
我们需要特定于站点/数据库(SQL Server / ADO.NET数据服务)的唯一ID。
任何语言的示例或想法都可以。
提前感谢。
如果您正在使用MS-SQL,您应该使用uniqueindentifier数据类型,它既紧凑(16字节),而且由于SQL引擎知道它,因此可以优化使用它的索引和查询。
UUID是由128位或16个字节组成的。如果不进行编码,它可以低至16个字节。UUID通常使用十六进制书写,使其成为32个字节可读取字符串。使用其他编码时,会得到不同的结果:
这完全取决于您是否想要可读的字符串以及您想使用多么标准/常见的编码方式。
UUID有128位。您考虑过对其进行CRC吗?这可以轻松将其缩减到16或32位,并且会使用所有原始信息。如果CRC不够好,您始终可以使用适当哈希(例如SHA256)的前几个字节。
如果您真的只想缩小UUID,则其格式在RFC 4122中有描述。您应该能够从中找出您的实现不需要的部分。