で次のコードを複製しようとしていますPHP
。これは、インターフェイスする必要がある API のサンプル コードです (API とサンプル コードは にあります。C#
私のアプリは にありPHP 5.3
ます)。私は C# 開発者ではないので、これを行うのに問題があります。
// C# Code I am trying to replicate in PHP
var apiTokenId = 1887;
var apiToken = "E1024763-1234-5678-91E0-T32E4E7EB316";
// Used to authenticate our request by the API (which is in C#)
var stringToSign = string.Empty;
stringToSign += "POST"+"UserAgent"+"http://api.com/post";
// Here is the issue, How can I do the following 3 lines in PHP?
// No "secret key" provided?.. How do I do this in PHP?
var hmacsha1 = new HMACSHA1(new Guid(apiToken).toByteArray());
// Make a byte array with ASCII encoding.
byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(stringToSign);
// Finally, 'computeHash' of the above (what does this do exactly?!)
var calculatedSignature = Convert.ToBase64String(hmacsha1.ComputeHash(byteArray));
オンラインで見つけた他の機能を使用して多くのバリエーションを試しpack()
ましたが、比較するものがないため、正しく実行したかどうかわかりません。
C# 開発者は上記のコードを実行し、生成された値を投稿して、それを使用してチェック/テストできますか?
MSDNをチェックして、これらのメソッドが何をするかを確認しようとしましたが、スタックしています (比較するものが何もないため、正しいかどうかはわかりません)。
PHP 疑似コード
// Set vars
$apiToken = 'E1024763-1234-5678-91E0-T32E4E7EB316';
$apiTokenId = '1887';
$stringToSign = "POST"."UserAgent"."http://api.com/post";
// HowTo: Build a `byteArray` of our apiToken? (i think)
// C#: var hmacsha1 = new HMACSHA1(new Guid(apiToken).toByteArray());
// HowTo: Convert our $stringToSign to a ASCII encoded `byteArray`?
// C#: byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(stringToSign);
// HowTo: Generate a base64 string of our (`hmacsha1`.ComputeHash(byteArray))
// C#: var calculatedSignature = Convert.ToBase64String(hmacsha1.ComputeHash(byteArray));
これは非常に単純でわかりやすいように聞こえますが、これらの C# メソッドのいくつかが何をするのかわかりません..
C#
これらのメソッドは何をする/返すのですか?
ComputeHash(byteArray)
- 何に計算されますか?.何が返されますか?System.Text.Encoding.ASCII.GetBytes(stringToSign);
- これは何を返しますか?new HMACSHA1(new Guid(apiToken).toByteArray());
秘密鍵がありませんか?、使用される鍵は何ですか?
リソースやヘルプをいただければ幸いです。SOで他の回答のバリエーションを試しましたが、喜びはありませんでした。
JSFiddle
各行の出力を確認できるように、3 行のコードをオンラインのどこかで実行することはC#
できますか?
更新 - バウンティが追加されました
これにはまだ問題がありC#
ますが、Visual Studio でコードをテストすることはできましたが、.NET で生成された同じハッシュを取得するのに問題がありPHP
ます。
をお願いします...
.. 上記のC#
コード (具体的には、SHA1
ハッシュを作成する 3 行) を PHP に変換します (Pseudo Code
上記の投稿を確認してください)。C#
PHPを使用してハッシュを一致させることができるはずです。
その他ご不明な点がございましたら、お尋ねください。