C# 在c中创建SOAP请求时的Sha1密码加密#

C# 在c中创建SOAP请求时的Sha1密码加密#,c#,soap,sha1,C#,Soap,Sha1,我试图使用SOAP将其集成到web服务中,但我在授权部分遇到了障碍,更具体地说,在创建sha1加密密码时。 有关此特定授权的文档,请访问 我一直在网上搜索,试图找到创建密码的不同方法,但似乎没有一种方法生成与文档页面中的示例相同的密码 string testDateString = "2015-07-08T11:31:53+01:00"; string testNonce = "186269"; string testSecret = "Ok4IWYLBHbKn8juM1gFPvQxadieZm

我试图使用SOAP将其集成到web服务中,但我在授权部分遇到了障碍,更具体地说,在创建sha1加密密码时。 有关此特定授权的文档,请访问

我一直在网上搜索,试图找到创建密码的不同方法,但似乎没有一种方法生成与文档页面中的示例相同的密码

string testDateString = "2015-07-08T11:31:53+01:00";
string testNonce = "186269";
string testSecret = "Ok4IWYLBHbKn8juM1gFPvQxadieZmS2";

SHA1CryptoServiceProvider sha1Hasher = new SHA1CryptoServiceProvider();
byte[] hashedDataBytes = sha1Hasher.ComputeHash(Encoding.UTF8.GetBytes(testNonce + testDateString + testSecret));
string Sha1Password = Convert.ToBase64String(hashedDataBytes);
输入变量来自文档页面。根据文档,密码应获得值“zdg3mtziztgwytmwyy4nzc4ogfjmmzhyja5yzm3mtdlymq1m2zkmw=” 但我使用的代码是生成“2HFr6Aowr4d4isL6sJw3F+vVP9M=”


有人知道我做错了什么吗?

我胡乱猜测,文档psuedo代码中“sha1()”的输出可能是一个十六进制字符串(如PHP中的sha1()等),这似乎输出了预期的密码

更新代码:

string testDateString = "2015-07-08T11:31:53+01:00";
string testNonce = "186269";
string testSecret = "Ok4IWYLBHbKn8juM1gFPvQxadieZmS2";

SHA1CryptoServiceProvider sha1Hasher = new SHA1CryptoServiceProvider();
byte[] hashedDataBytes = sha1Hasher.ComputeHash(Encoding.UTF8.GetBytes(testNonce + testDateString + testSecret));

var hexString = BitConverter.ToString(hashedDataBytes).Replace("-", string.Empty).ToLower();
string Sha1Password = Convert.ToBase64String(Encoding.UTF8.GetBytes(hexString));

他们也使用UTF-8吗?嗯,不知道,但如果改为Encoding.ASCII.GetBytes.confirm,我仍然会得到相同的(错误的)密码值。我只是想用蛮力找到正确的算法,但没有一个SHA加密提供者提供正确的长度(当然也没有值)。绝对精彩!非常感谢。