选择sha256解密和md5转换postgresql和java
下午好,我需要将UUID转换为sha256,然后再转换为md5,在java中是有效的,但如果我使用pgadminpostgres,则1个字符是不同的 在爪哇选择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
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');