簡體   English   中英

在C#中創建SOAP請求時對密碼進行SHA1加密

[英]Sha1 encryption of password when creating SOAP request in c#

我試圖將使用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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM