如何创建API密钥和安全密钥?

问题描述 投票:0回答:1

通常,如果我使用第三方api,它们都会给我们两个密钥,它们是:

API密钥:随机数或GUID的种类

Pin /安全密钥/等:密码或OTP的类型

现在,假设我是第三方,并且我希望零售商可以使用我的API,我还想创建这些凭证并将其提供给API使用者。我在.net core中工作。有什么方法可以创建这些,我们也必须应用安全性或基于令牌的安全性。

我很困惑,因为我不知道如何实现。

正如我研究了一些有关堆栈溢出的问题时,他们建议使用thisor this或某些使用HMAC安全性,但是在HMAC中,我们必须强制客户端也使用HMAC,以便可以匹配相同的签名。

我处于混乱状态。能否请您提出一些我可以在.net core中做到的方法

security .net-core asp.net-core-webapi api-key
1个回答
0
投票

生成API密钥基本上可以分解为仅生成加密随机字符串。我在下面的C#代码段中生成了一个随机的十六进制字符串:

    using System.Security.Cryptography;

    public static string RandomString()
    {
        byte[] randomBytes = new Byte[64];
        using (RandomNumberGenerator rng = new RNGCryptoServiceProvider())
        {
            rng.GetBytes(randomBytes);
        }
        SHA256Cng ShaHashFunction = new SHA256Cng();
        byte[] hashedBytes = ShaHashFunction.ComputeHash(randomBytes);
        string randomString = string.Empty;
        foreach (byte b in hashedBytes)
        {
            randomString += string.Format("{0:x2}", b);
        }
        return randomString;
    }

您可以使用其他哈希函数轻松更改结果密钥的长度,也可以将十六进制编码切换为使用API​​密钥时更常见的Base64(Convert.ToBase64String(hashedBytes),它将取代foreach循环)编码。

© www.soinside.com 2019 - 2024. All rights reserved.