Получить строку Sql Server nvarchar (255) байтов в Java - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь скопировать устаревший алгоритм хэширования Sql Server в Java. Проблема в том, что этот алгоритм использует HashBytes (MD5), который дает разные результаты в зависимости от типа строки, которую я хэширую.

Так что, как минимум, мне нужно знать, как получить байты строки как nvarchar (255) в Java.

Я понимаю, что мог бы просто сделать это как выбор SQL в Java, но я ищу способ этого не делать.

1 Ответ

0 голосов
/ 02 мая 2018
    byte[] b = str.getBytes("UTF-16LE");
    java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
    return javax.xml.bind.DatatypeConverter.printHexBinary(md.digest(b));

Это дает мне тот же хеш, что и SQL Server HASHBYTES('MD5',...) на некоторых nvarchar(255). Ключ, кажется, UTF-16LE.

...