通常,如果我使用第三方api,它们都会给我们两个密钥,它们是:
API密钥:一种随机数或GUID
Pin /安全密钥/等:密码或OTP类型
现在,假设我是第三方,并且我希望零售商可以使用我的API, 我还想创建这些凭证并将其提供给API使用者。 我在.net core中工作。有什么方法可以创建这些,我们还必须应用安全性 或基于令牌的安全性。
我很困惑,因为我不知道如何实现。
当我研究一些有关堆栈溢出的问题时,他们建议使用this,or this或某些使用HMAC安全性,但是在HMAC中,我们必须强制客户端也使用HMAC,以便可以匹配相同的签名。
我精神错乱。您能否提出一些建议,以便我在.net core中做到这一点
答案 0 :(得分: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;
}
您可以通过使用其他哈希函数轻松更改结果键的长度,或者也可以将十六进制编码切换为Base64(Convert.ToBase64String(hashedBytes)
,它将替换foreach
循环)编码,该编码更多使用API密钥时很常见。