У меня есть. NET функция MD5, которая при запуске на «146.185.59.178acu-cell.com» возвращает f36674ed3dbcb151e1c0dfe4acdbb9f5
public static String MD5(String s)
{
using (var provider = System.Security.Cryptography.MD5.Create())
{
StringBuilder builder = new StringBuilder();
foreach (Byte b in provider.ComputeHash(Encoding.UTF8.GetBytes(s)))
builder.Append(b.ToString("x2").ToLower());
return builder.ToString();
}
}
Я написал тот же код в T SQL, но по какой-то причине только varchar возвращает ожидаемый результат. Nvarchar возвращает другое значение md5: f04b83328560f1bd1c08104b83bc30ea
declare @v varchar(150) = '146.185.59.178acu-cell.com'
declare @nv nvarchar(150) = '146.185.59.178acu-cell.com'
select LOWER(CONVERT(VARCHAR(32), HashBytes('MD5', @v), 2))
--f36674ed3dbcb151e1c0dfe4acdbb9f5
select LOWER(CONVERT(VARCHAR(32), HashBytes('MD5',@nv), 2))
--f04b83328560f1bd1c08104b83bc30ea
Не уверен, что здесь происходит, потому что я ожидаю, что nvarchar вернет f36674ed3dbcb151e1d2b4505 . NET