java和oracle 12c之间的加密值不匹配

java和oracle 12c之间的加密值不匹配,java,encryption,oracle12c,Java,Encryption,Oracle12c,给定代码中来自Java的加密值 返回的encryptedValue=48ykdmhcgotgbtpy3frag oracle 12c代码中的加密值为 输出:E3CC8A0C39870A0A2D81B4E9CB71516A 将其从十六进制转换为64进制后:48yKDDmHCgotgbTpy3FRag== 请告诉我们如何获得java和oracle之间的匹配值 谢谢您可以使用jdk的base 64编码器。它将保留结尾处的“=”填充 String encryptedValue = Base64.g

给定代码中来自Java的加密值



返回的encryptedValue=48ykdmhcgotgbtpy3frag

oracle 12c代码中的加密值为
输出:E3CC8A0C39870A0A2D81B4E9CB71516A 将其从十六进制转换为64进制后:48yKDDmHCgotgbTpy3FRag==

请告诉我们如何获得java和oracle之间的匹配值


谢谢

您可以使用jdk的base 64编码器。它将保留结尾处的“=”填充

String encryptedValue = Base64.getEncoder().encodeToString(encVal);

这只是有无填充编码的区别。结果是相同的,末尾有0到2个等号。

它们是相同的,只是base64填充不同。对吧?这就是我们不确定的。我们希望java和oracle数据库中的encrpted值应该相同,这与您可以用来将数据库结果编码为base64的oracle文档一致。还要注意,在Java中,
Base64.encodebase64urlsafesting
不应用填充,而是使用URL安全的Base64字母表。您可能希望使用
Base64.encodeBase64String
获得java中的正常Base64字母表。实际上,我们希望保持java中的值不变,并且需要使oracle 12c值与java兼容。那么您应该在db论坛上发布此问题:)
String encryptedValue = Base64.getEncoder().encodeToString(encVal);
String encryptedValue = Base64.getEncoder().encodeToString(encVal);