选择sha256解密和md5转换postgresql和java

选择sha256解密和md5转换postgresql和java,java,postgresql,md5,sha256,Java,Postgresql,Md5,Sha256,下午好,我需要将UUID转换为sha256,然后再转换为md5,在java中是有效的,但如果我使用pgadminpostgres,则1个字符是不同的 在爪哇 public class outro { public static void main(String[] args) { String prontuarioBaseUUID = "a1d347fc-094f-49de-91b9-f2765c58b94d"; System.out.println(uuidSha2Encry

下午好,我需要将UUID转换为sha256,然后再转换为md5,在java中是有效的,但如果我使用pgadminpostgres,则1个字符是不同的

在爪哇

public class outro {

public static void main(String[] args) {
    String prontuarioBaseUUID = "a1d347fc-094f-49de-91b9-f2765c58b94d";
    System.out.println(uuidSha2Encrypt(prontuarioBaseUUID));

}

public static String uuidSha2Encrypt(String uuid) {
    try {
        MessageDigest md = MessageDigest.getInstance("SHA-256");
        md.update(uuid.getBytes());
        return UUID.nameUUIDFromBytes(md.digest()).toString();
    } catch (NoSuchAlgorithmException ns) {
        throw new RuntimeException("Algoritmo SHA-256 não disponível", ns);
    }
}
结果d5fabb45-dbd1-399b-a6c1-515367b8a2d4

在pgadmin postgres中

在MD5Digest'a1d347fc-094f-49de-91b9-f2765c58b94d'、'sha256':cstring from tb_paciente中选择uuid_

结果d5fabb45-dbd1-b99b-a6c1-515367b8a2d4

问题是什么?thxx

d5fabb45-dbd1-399b-a6c1-515367b8a2d4 d5fabb45-dbd1-b99b-a6c1-515367b8a2d4
Java方法的问题在于它没有包含UUIDV3所需的名称空间。在调用UUID.nameUUIDFromBytes之前,需要将命名空间前置到名称:

我在上面的示例中使用了nil名称空间,但它可以是任何名称空间

上面的测试显示

96e17d7a-ac89-38cf-95e1-bf5098da34e1
与等效postgres查询的输出相匹配:

select uuid_generate_v3(uuid_nil(), 'test');

这是因为您的查询没有将UUID的版本和变量标志设置为v3值。uuid ossp扩展中有一个uuid_generate_v3,但它将名称空间作为参数。你到底想实现什么?我使用uuid_generate_v3、uuid_generate_v5和所有名称空间uuid_nil、uuid_ns_dns、uuid_ns_url、uuid_ns_oid、uuid_ns_x500,不使用所有不同的uuid:选择uuid_generate_v3uuid_nil、md5digest'aD347fc-094f-49de-91b9-f27658b94d、'sha256';
select uuid_generate_v3(uuid_nil(), 'test');