perl - 如何在 Perl 中使用哈希生成唯一 ID?

标签 perl uniqueidentifier

我正在编写多个客户端和服务器之间的消息传输程序。

我想为每条消息生成一个唯一的消息 ID。它应该由服务器生成并返回给客户端。

对于消息传输,我使用的是散列数据结构,例如:

{
api => POST,
username => sganesh,
pass => "pass",
message => "hai",
time => "current_time",
}

我想使用这个哈希生成一个唯一的 ID。

我尝试了几种方法,MD5 和卡住,但这些方法给出了不可读的 ID。我想要一些有意义或可读的唯一 ID。

我认为我们可以使用微秒来区分 ID,但这里的问题是多个客户端。

在任何情况下,ID 都应该是唯一的。

谁能帮我解决这个问题?

提前致谢。

最佳答案

我怀疑你不想做你所要求的,但你可以做到。

  • 获取散列键/值并将它们展平为数组 @foo = (%foo) .
  • MD5 数组以获取 ID 代码 - 使用 md5_base64(@foo)如果您希望它是 7 位(人类可读)。
  • 请记住,哈希不是有序的,因此您需要 sort @foo数组,如果你希望它是可重复的。

  • 在代码中,类似于:
    use Digest::MD5 qw(md5_base64);
    
    my $foo = {
        api => POST,
        username => sganesh,
        pass => "pass",
        message => "hai",
        time => "current_time",
    };
    
    my $id = md5_base64(sort %$foo); # in my case eRR9QzGN1n+nIl1TDmclEA
    

    老实说,我认为您最好生成一个唯一的随机 ID( token )并将其提供给客户以返回给您,但是从您的问题来看,我不知道您的动机。

    关于perl - 如何在 Perl 中使用哈希生成唯一 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2468012/

    相关文章:

    ios - 如何在 UIDevice 上找到调用 uniqueIdentifier 的文件?

    arrays - 如何根据正则表达式过滤每个数组元素

    r - 如何为 r 中两个数据帧之间的匹配观察分配相同的唯一 ID?

    perl - 如何跳转迭代器以指向 foreach 循环中列表的任何其他元素?

    perl - 如何使用 Perl 将相同的文本写入两个单独的文件句柄?

    entity-framework - EntityFramework 使用值 "00000000-0000-0000-0000-000000000000"填充唯一标识符

    ios - App更新时iPhone UUID会改变吗?

    ios - 即使在清除应用程序数据后也能识别设备的唯一 ID

    mysql - 递归遍历 DBIx::Class 关系

    perl - 检查 Perl 数据引用类型