1
Я пытаюсь использовать параметр varbinary
с Dapper.NET следующимИспользование VARBINARY параметра с Dapper.NET
string secret = "secret";
// from SELECT ENCRYPTBYPASSPHRASE('secret', N'xx') >>;
string ciphertext = "0x01000000393FE233AE939CA815AB744DDC39667860B3B630C82F36F7";
using (var conn = new SqlConnection(...))
{
var result = conn.ExecuteScalar(@"SELECT CONVERT(NVARCHAR(4000), DECRYPTBYPASSPHRASE(@secret, @ciphertext)) as decrypted",
new
{
secret,
ciphertext = Encoding.Unicode.GetBytes(ciphertext)
});
}
Однако результат null
. Но он возвращает действительный результат, если я запускаю SQL напрямую, например.
SELECT CONVERT(NVARCHAR(40), DECRYPTBYPASSPHRASE('secret', 0x01000000393FE233AE939CA815AB744DDC39667860B3B630C82F36F7))
возвращает xx
который является зашифрованным текстом.
Любая идея, что я делаю неправильно?
' Encoding.Unicode.GetBytes' собирается получить вам массив байтов * строкового представления * вашего шестнадцатеричного значения – Rob
Используйте [this] (http://stackoverflow.com/questions/321370/how-can-i-convert- a-hex-string-to-a-byte-array), чтобы получить правильное значение для 'enciphertext' – Rob