在 C# 中创建 SOAP 请求时对密码进行 Sha1 加密



我试图使用 SOAP 集成到 Web 服务中,但我陷入了授权部分,更具体地说,在创建 sha1 加密密码时。 有关此特定授权的文档,请访问 https://www.beautyfort.com/api/docs/AuthHeader-t1

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

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);

输入变量来自文档页面。根据文档,密码应获得值"ZDg3MTZiZTgwYTMwYWY4Nzc4OGFjMmZhYjA5YzM3MTdlYmQ1M2ZkMw==" 但我使用的代码正在生成"2HFr6Aowr4d4isL6sJw3F+vVP9M="。

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

我疯狂地猜测,文档伪代码中"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));

最新更新