gpt4 book ai didi

c# - 将客户端生成的 guid 直接翻译到服务器端、存储它们等可以吗?碰撞风险不会更高吗?

转载 作者:行者123 更新时间:2023-11-28 16:09:26 25 4
gpt4 key购买 nike

我编写了一个客户端应用程序。我现在正在为其创建一个后端来保存数据,但对 GUID 实现很好奇。

在客户端,我使用以下 JavaScript 生成具有唯一 ID 的 Song 对象。它基于 this StackOverflow post .

//Based off of: https://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript
generateGuid: function () {
var startStringFormat = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';

var guid = startStringFormat.replace(/[xy]/g, function (c) {
var r = Math.floor(Math.random() * 16);

var v = c === 'x' ? r : (r & 0x3 | 0x8);

return v.toString(16);
});

return guid;
},

现在,我在 C# 中定义一个类来表示我的 Song 对象:

public class Song
{
public virtual Guid Id { get; set; }
public virtual Guid PlaylistId { get; set; }
public virtual int VideoId { get; set; }
public virtual string Url { get; set; }
public virtual string Title { get; set; }
public virtual int Duration { get; set; }
}

这样做让我想知道交互 Guid 对象的含义。我可以只获取 localStorage 中的所有 Song 对象并直接翻译它们的 Guid 吗?我应该重新生成所有这些吗?

最佳答案

由于 Guid 是唯一的(如果正确生成),您可以重复使用现有的 ID。但要小心,因为恶意客户端当然可以发送任何 ID,而不仅仅是随机 ID。因此,客户很容易在他自己的Guid之间引发冲突。如果所有善意的客户端都随机生成其 Guid,则恶意客户端就无法与它们发生冲突。从这个意义上说,Guid 就像一个 128 位密码,非常强大。

另一方面,生成这些 Guid 的方式不是使用加密安全随机数生成器。所以我想您应该通过向服务器发出 AJAX 调用来让服务器提供一个安全的 Guid。

显示的生成算法对我来说看起来很时髦。您不需要维护任何特定的模式。您可以只生成一个由 100% 随机组件组成的 Guid。

关于c# - 将客户端生成的 guid 直接翻译到服务器端、存储它们等可以吗?碰撞风险不会更高吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13546131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com