Calcular o hash MD5 de uma sequência UTF8

Eu tenho uma tabela SQL na qual armazeno valores grandes de string que devem ser exclusivos. Para garantir a exclusividade, tenho um índice exclusivo em uma coluna na qual armazeno uma representação de string do hash MD5 da string grande.

O aplicativo C # que salva esses registros usa o seguinte método para fazer o hash:

public static string CreateMd5HashString(byte[] input)
{
    var hashBytes = MD5.Create().ComputeHash(input);
    return string.Join("", hashBytes.Select(b => b.ToString("X")));
}

Para chamar isso, primeiro converto ostring parabyte[] usando a codificação UTF-8:

// this is what I use in my app
CreateMd5HashString(Encoding.UTF8.GetBytes("abc"))
// result: 90150983CD24FB0D6963F7D28E17F72

Agora eu gostaria de poder implementar essa função de hash no SQL, usando oHASHBYTES função, mas recebo um valor diferente:

print hashbytes('md5', N'abc')
-- result: 0xCE1473CF80C6B3FDA8E3DFC006ADC315

Isso ocorre porque o SQL calcula o MD5 da representação UTF-16 da sequência. Eu obtenho o mesmo resultado em c # se eu fizerCreateMd5HashString(Encoding.Unicode.GetBytes("abc")).

Não consigo alterar a maneira como o hash é feito no aplicativo.

Existe uma maneira de obter o SQL Server para calcular o hash MD5 dos bytes UTF-8 da seqüência de caracteres?

Procurei perguntas semelhantes, tentei usar agrupamentos, mas até agora não tive sorte.

questionAnswers(2)

yourAnswerToTheQuestion