PDFGeneratorAPI - 生成签名

时间:2018-02-25 08:52:01

标签: sha256

PDFGeneratorAPI似乎是一个非常强大的工具,用于生成和设计在线PDF文档。但我花了一些时间在c#中生成正确的签名密钥并翻译他们在网站上的PHP示例:

   $key = 'abcdefghijk';
   $secret = 'abcdefghijkabcdefghijk';
   $workspace = 'OB1234';
   $resource = 'templates;


  $data = [
    'key' => $key,
    'resource' => $resource,
    'workspace' => $workspace
  ];
  ksort($data);

  $signature = hash_hmac('sha256', implode('', $data), $secret);

第一个问题是,PHP ksort对数组的排序方式与c#不同。我不确切知道为什么,但我有一个字符串数组,其中" t"在" O"之前排序。它是基于ASCII码排序的吗?

我努力在c#

中找到合适的翻译

此致

弗洛里安

1 个答案:

答案 0 :(得分:0)

这有效:

    public string CreateSignature(string secret= "abcdefghijkabcdefghijk", string APIKey= "abcdefghijk", string resource = "templates")
    {

        List<string> _apiStringArray = new List<string>() {APIKey, resource, "'OB1234" };

        // _apiStringArray.Sort();

        string _apistring = String.Join("", _apiStringArray.ToArray());
        string _signature;

        var encoding = new System.Text.ASCIIEncoding();
        byte[] keyByte = encoding.GetBytes(secret);
        byte[] messageBytes = encoding.GetBytes(_apistring);
        using (var hmacsha256 = new HMACSHA256(keyByte))
        {
            byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
            _signature =  BitConverter.ToString(hashmessage).Replace("-", "").ToLower();


        }

   return _signature;

    }

但仍然想知道排序

弗洛里安