到目前为止,我看到了这些选项(伪代码):
A。非常简单的MD5哈希值:
$identifier = MD5(object.id + created_at + app_secret)
=> 4c0dc8d3fdffacb65d04911291aac4cf
B。 UUID:
$identifier = uuid()
=> fbcf6520-ab93-11e8-86b4-080027b55b5e
但是哪个UUID version最有意义?我倾向于v4。
C。我想为这些ID加上前缀,所以我立即知道例如,哪种对象是什么意思。在日志或支持请求中。
$identifier = 'trx_' + uuid()
=> trx_fbcf6520-ab93-11e8-86b4-080027b55b5e
但这是一个不错的风格吗?我可以不带前缀存储,但可以带前缀公开,并允许带或不带请求。
什么是最好的果仁糖?
答案 0 :(得分:1)
这并不重要。如果我使用类似UUID的标识符,我确实会稍微喜欢UUID格式,因为它会向API用户发出“这是UUID”的信号。
对于用户来说,可能会有一些小的好处,因为如果看到UUID,我知道我可以将它作为128位整数而不是字符串存储在数据库中。
需要注意的一件事是安全性。您的第一个示例使用单词secret
,该单词可能告诉我,这些ID不可猜测。 UUID的 是可猜测的,并且不是加密安全的。
话虽这么说,MD5也不安全,所以在这种情况下,您的两个示例都是错误的。