我正在编写多个客户端和服务器之间的消息传输程序。
我想为每条消息生成一个唯一的消息 ID。它应该由服务器生成并返回给客户端。
对于消息传输,我使用的是散列数据结构,例如:
{
api => POST,
username => sganesh,
pass => "pass",
message => "hai",
time => "current_time",
}
我想使用这个哈希生成一个唯一的 ID。
我尝试了几种方法,MD5 和卡住,但这些方法给出了不可读的 ID。我想要一些有意义或可读的唯一 ID。
我认为我们可以使用微秒来区分 ID,但这里的问题是多个客户端。
在任何情况下,ID 都应该是唯一的。
谁能帮我解决这个问题?
提前致谢。
最佳答案
我怀疑你不想做你所要求的,但你可以做到。
@foo = (%foo)
. 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/