Brokerbin身份验证

时间:2015-04-23 17:53:19

标签: c# encryption soap blowfish

我们正试图在经纪人服务中对自己进行身份验证。他们为我们提供了加密密钥和登录/通行证。文档说明应使用BLOWFISH_ECB加密登录名和密码。但该服务继续回应“失败的身份验证”。

我们正在使用BlowFishCS库。 这是我们使用的示例代码。

var client = new BrokerBinService.HandleSearchPortClient();

string reqUsername = "my_login";
string reqPassword = "my_pass";
string key = "provided_enc_key";

var algo = new BlowFishCS.BlowFish(key);

var encrytedUSerName = algo.Encrypt_ECB(reqUsername);
var encryptedPassword = algo.Encrypt_ECB(reqPassword);

var authResponce = client.Authenticate(encrytedUSerName, encryptedPassword, null);

这是来自brokerbin文档的PHP代码示例。从该示例中我们可以看到登录和密码有不同的密钥,但技术支持说我们应该为两者使用相同的密钥。

$username = '';
$password = '';
$uname_key = 'code';
$pword_key = '';

//INITIALIZE THE MCYPT EXTENTION
$td = mcrypt_module_open (MCRYPT_BLOWFISH, "", MCRYPT_MODE_ECB, "");
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);

// ENCRYPT USERNAME
mcrypt_generic_init ($td, $uname_key, $iv);
$username_enc = base64_encode(mcrypt_generic($td, $username));
mcrypt_generic_deinit($td);

// ENCRYPT PASSWORD
mcrypt_generic_init ($td, $pword_key, $iv);
$password_enc = base64_encode(mcrypt_generic($td, $password));
mcrypt_generic_deinit($td);

// CLOSE THE MCRYPT EXTENTION
mcrypt_module_close($td);

// START THE SOAP CLIENT
$client = new SoapClient('http://soap.brokerbin.com/brokerbin_search/search.wsdl');

// DO NOT SET RESULT_TYPE TO XML HERE (AUTHENTICATE)...
$opts=array('checkout_seconds'=>86400);
$uid = $client->Authenticate($username_enc,$password_enc,$opts);

我想知道是否有人在brobinbin整合方面有成功的经验,并且可以解释我们的问题。

提前致谢。

1 个答案:

答案 0 :(得分:1)

Php字符串使用每个字符的单字节字符串。在C#示例中,对字符串使用UTF-16默认值。当通过河豚加密时,这将产生不同的输出。

您希望通过

运行C#字符串
byte[] asciiBytes = Encoding.ASCII.GetBytes(value);

在将它们提供给Blowfish加密函数之前。