在Java

时间:2018-05-02 16:07:03

标签: java sql-server-2008 types java-8

我正在尝试用Java复制旧的Sql Server哈希算法。问题是该算法使用HashBytes(MD5),它根据我正在散列的字符串的类型给出不同的结果。

所以至少,似乎我需要知道如何在java中将字符串的字节作为nvarchar(255)。

我意识到我可以用Java中的sql select来做这个,但我正在寻找一种不这样做的方法。

1 个答案:

答案 0 :(得分:0)

    byte[] b = str.getBytes("UTF-16LE");
    java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
    return javax.xml.bind.DatatypeConverter.printHexBinary(md.digest(b));

这给了我与某些HASHBYTES('MD5',...)上的sql server nvarchar(255)相同的哈希值。关键似乎是UTF-16LE