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#
中找到合适的翻译此致
弗洛里安
答案 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;
}
但仍然想知道排序
弗洛里安