相关疑难解决方法(0)

使用c#计算HMACSHA256以匹配支付提供商示例

对于支付提供商,我需要使用HMAC-SHA256计算基于散列的消息验证代码.这给我带来了很多麻烦.

支付提供商提供两个以伪代码正确计算的认证代码的示例.所有键均为十六进制.

方法1

key = 57617b5d2349434b34734345635073433835777e2d244c31715535255a366773755a4d70532a5879793238235f707c4f7865753f3f446e633a21575643303f66
message = "amount=100&currency=EUR"
MAC = HMAC-SHA256( hexDecode(key), message )
result = b436e3e86cb3800b3864aeecc8d06c126f005e7645803461717a8e4b2de3a905
Run Code Online (Sandbox Code Playgroud)

方法2

message = "amount=100&currency=EUR"
Ki = 61574d6b157f757d02457573556645750e0341481b127a07476303136c005145436c7b46651c6e4f4f040e1569464a794e534309097258550c17616075060950
Ko = 0b3d27017f151f17682f1f193f0c2f1f64692b227178106d2d096979066a3b2f2906112c0f760425256e647f032c2013243929636318323f667d0b0a1f6c633a
MAC = SHA256( hexDecode(Ko) + SHA256( hexDecode(Ki) + message ) )
result = b436e3e86cb3800b3864aeecc8d06c126f005e7645803461717a8e4b2de3a905
Run Code Online (Sandbox Code Playgroud)

在做了一些研究之后,我尝试编写代码来做这件事,但我不断得出不同的结果.

private static void Main(string[] args)
    {
        var key = "57617b5d2349434b34734345635073433835777e2d244c31715535255a366773755a4d70532a5879793238235f707c4f7865753f3f446e633a21575643303f66";
        var ki = "61574d6b157f757d02457573556645750e0341481b127a07476303136c005145436c7b46651c6e4f4f040e1569464a794e534309097258550c17616075060950";
        var ko = "0b3d27017f151f17682f1f193f0c2f1f64692b227178106d2d096979066a3b2f2906112c0f760425256e647f032c2013243929636318323f667d0b0a1f6c633a";
        var mm = "amount=100&currency=EUR";

        var result1 = CalcHMACSHA256Hash(HexDecode(key), mm);

        var result2 = CalcSha256Hash(string.Format("{0}{1}", HexDecode(ko), CalcSha256Hash(HexDecode(ki) + mm)));

        Console.WriteLine("Expected: b436e3e86cb3800b3864aeecc8d06c126f005e7645803461717a8e4b2de3a905"); …
Run Code Online (Sandbox Code Playgroud)

c# security cryptography

45
推荐指数
3
解决办法
5万
查看次数

如何在.Net Core中生成HMAC-SHA256?

我正在使用此页面为某些文本生成一些测试HMAC-SHA256哈希值:

https://www.liavaag.org/English/SHA-Generator/HMAC/

但是,当我尝试在我的.Net Core项目中使用此MSDN指南中的方法时,我得不到相同的结果.有人可以向我解释如何获得与我在C#代码中从以前的网页获得的结果相同的结果吗?

这是我的代码:

// My own GetHash method usage:
var hashed = PasswordHelper.GetHash("Test", Encoding.UTF8.GetBytes("123"));

public static string GetHash(string password, byte[] salt)
{
    // derive a 256-bit subkey (use HMACSHA1 with 10,000 iterations)
    string hashed = Convert.ToBase64String(KeyDerivation.Pbkdf2(
        password: password,
        salt: salt,
        prf: KeyDerivationPrf.HMACSHA256,
        iterationCount: 10000,
        numBytesRequested: 256 / 8));
    return hashed;
}
Run Code Online (Sandbox Code Playgroud)

c# hash hmac .net-core asp.net-core

8
推荐指数
1
解决办法
8469
查看次数

币安 API Hmac 签名

请帮助我不知道我的代码有什么问题。不需要签名的端点工作正常,所以我想是我如何获取签名的问题。我收到此错误:

data: { code: -2014, msg: 'API-key format invalid.' } } }
Run Code Online (Sandbox Code Playgroud)

API 文档:https : //github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md

SIGNED 端点需要在查询字符串或请求正文中发送附加参数签名。端点使用 HMAC SHA256 签名。HMAC SHA256 签名是加密的 HMAC SHA256 操作。使用您的 secretKey 作为密钥,使用 totalParams 作为 HMAC 操作的值。签名不区分大小写。totalParams 定义为与请求正文连接的查询字符串。

我的代码:

const axios = require('axios');
const crypto = require('crypto');
const qs = require('qs');

const binanceConfig = {
  API_KEY: 'XXXXXXX',
  API_SECRET: 'XXXXXX',
  HOST_URL: 'https://api.binance.com',
};

const buildSign = (data, config) => {
  return crypto.createHmac('sha256', config.API_SECRET).update(data).digest('hex');
};

const privateRequest = async (data, endPoint, type) => {
  const dataQueryString …
Run Code Online (Sandbox Code Playgroud)

javascript api node.js

8
推荐指数
1
解决办法
8509
查看次数

标签 统计

c# ×2

.net-core ×1

api ×1

asp.net-core ×1

cryptography ×1

hash ×1

hmac ×1

javascript ×1

node.js ×1

security ×1