Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用数据库信息生成Guid_C#_.net_Asp.net Mvc_Security_Asp.net Web Api - Fatal编程技术网

C# 使用数据库信息生成Guid

C# 使用数据库信息生成Guid,c#,.net,asp.net-mvc,security,asp.net-web-api,C#,.net,Asp.net Mvc,Security,Asp.net Web Api,我正在开发ASP.NET MVC WEB API服务。在任何地方我都需要安全令牌。我有一个想法,使用dtabase信息生成guid。对于isntance,我需要从db中获取实体,然后在此信息中获取id、datecreated和guid。它将是发送给客户端的令牌。这样他就可以访问他的数据了 问题是我不知道如何生成它。请给我一些建议使它起作用 我找到了一篇有趣的文章 任何帮助都将不胜感激, Dima.我只需要在每个实体中存储一个AccessKey uniqueidentifier not null

我正在开发ASP.NET MVC WEB API服务。在任何地方我都需要安全令牌。我有一个想法,使用dtabase信息生成guid。对于isntance,我需要从db中获取实体,然后在此信息中获取id、datecreated和guid。它将是发送给客户端的令牌。这样他就可以访问他的数据了

问题是我不知道如何生成它。请给我一些建议使它起作用

我找到了一篇有趣的文章

任何帮助都将不胜感激,
Dima.

我只需要在每个实体中存储一个
AccessKey uniqueidentifier not null unique
。你可以把它发给客户。这样,您就不需要处理加密或散列

只需确保不要为此使用
Guid.NewGuid()
,因为它的加密性不强。使用以下命令:

public static class SecureGuidGenerator
{
    [ThreadStatic]
    static RandomNumberGenerator rng;

    public static Guid GetNext()
    {
        if (rng == null) rng = RandomNumberGenerator.Create();
        var bytes = new byte[16];
        rng.GetBytes(bytes);
        return new Guid(bytes);
    }
}

我只是将一个
AccessKey uniqueidentifier not null unique
与每个实体一起存储。你可以把它发给客户。这样,您就不需要处理加密或散列

只需确保不要为此使用
Guid.NewGuid()
,因为它的加密性不强。使用以下命令:

public static class SecureGuidGenerator
{
    [ThreadStatic]
    static RandomNumberGenerator rng;

    public static Guid GetNext()
    {
        if (rng == null) rng = RandomNumberGenerator.Create();
        var bytes = new byte[16];
        rng.GetBytes(bytes);
        return new Guid(bytes);
    }
}


为什么不使用Guid securityToken=Guid.NewGuid();你想要一个GUID或某种携带你自己设计的标识符的数据吗?听起来你好像在试图将信息(如创建日期)嵌入到标识中。@HABO是的,我想要某种安全的数据载体。这可能吗?你写的正是我想加入几个参数并用我在帖子中提到的SHortGuid编码为什么你不能使用任何现有的身份验证/授权机制?如果客户端要从“令牌”提取数据,那么你需要使用可逆加密。这意味着客户端有一个解密密钥。您是否已经保护连接,即使用SSL?您真正想要完成的是什么?为什么不使用Guid securityToken=Guid.NewGuid();你想要一个GUID或某种携带你自己设计的标识符的数据吗?听起来你好像在试图将信息(如创建日期)嵌入到标识中。@HABO是的,我想要某种安全的数据载体。这可能吗?你写的正是我想加入几个参数并用我在帖子中提到的SHortGuid编码为什么你不能使用任何现有的身份验证/授权机制?如果客户端要从“令牌”提取数据,那么你需要使用可逆加密。这意味着客户端有一个解密密钥。您是否已经保护连接,即使用SSL?您真正想要实现什么?请注意,这并不是要创建UUID,而是要创建一个128位长的随机数,这个随机数略有不同。UUID具有正式的结构。请参阅:-如果您想要UUID中的随机数据,您需要版本4 UUID(第13页第4节)。@LarryOsterman,您所说的都是真的。出于安全原因,我不想要UUID。我想要随机的比特。这是一个密码。实际上,它们和UUID一样独特。谢谢你的回答,但这不是我想要的。我想在guid中嵌入id和datecreation,然后生成短guid。可能吗?为什么要对这些信息进行编码?为什么我的答案不适合你呢?我在这里是usr的——在db中包含一个唯一的ID列。但是,如果您必须从id和datecreation生成GUID,RFC4122将展示如何做到这一点-但是您应该注意,RFC中提到的MD5算法是不安全的。注意,这不会创建UUID-它将创建一个128位长的随机数,这略有不同。UUID具有正式的结构。请参阅:-如果您想要UUID中的随机数据,您需要版本4 UUID(第13页第4节)。@LarryOsterman,您所说的都是真的。出于安全原因,我不想要UUID。我想要随机的比特。这是一个密码。实际上,它们和UUID一样独特。谢谢你的回答,但这不是我想要的。我想在guid中嵌入id和datecreation,然后生成短guid。可能吗?为什么要对这些信息进行编码?为什么我的答案不适合你呢?我在这里是usr的——在db中包含一个唯一的ID列。但是,如果您必须从id和datecreation生成GUID,RFC4122将展示如何做到这一点——但是您应该注意,RFC中提到的MD5算法是不安全的。