xamarin 生成用户ID的正确方法

h4cxqtbf  于 2023-03-06  发布在  其他
关注(0)|答案(3)|浏览(129)

我正在使用Xamarin。窗体项目和用户可以创建帐户,每个帐户在创建时都会得到一个唯一的ID。我应该使用特定的方法来创建ID吗?
我在用

$id = hash(sha256, $now. $birthday);

是否有可能会生成重复项?我是否应该使用其他方法?或者这样可以吗?
编辑:

$id = hash(sha256, $date . $birthday);
 if(DB::query('SELECT * FROM users WHERE id=:id', array(':id' => $id))){
    $id = hash(sha256, $date . $birthday . rand(100, 999));
 if(DB::query('SELECT * FROM users WHERE id=:id', array(':id' => $id))){
    echo 'try_again';
    return;
 }
}
toiithl6

toiithl61#

是否有可能会生成重复项?我是否应该使用不同的方法?
你总是有机会得到相同的值,因为没有什么能阻止两个同一天出生的人在一秒钟内触发你的代码。所以虽然sha256很好,但你使用它的方式却不是,因为1秒钟仍然足够长。如果你想确保你没有给不同的用户分配相同的ID,那么你应该经常检查(即通过查看你的数据库)给定的ID是否还没有被使用。你的数据库模式也应该使用UNIQUE属性来防止重复的ID被插入。

mo49yndu

mo49yndu2#

冷静点。

var Id = Guid.NewGuid().ToString();
a9wyjsp7

a9wyjsp73#

不需要使用时间戳或生日,使用随机值即可:

hash('sha256', random_bytes(32));

出现重复值的几率非常低,甚至不需要循环,只要能处理可能出现的错误就足够了。

相关问题