gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 10:22:51 27 4
gpt4 key购买 nike

来自给定代码的 Java 加密值

<小时/>
public static String encrypt(String data, String sessionuser) throws Exception {

sessionuser = "HVQKcI6yo425a4d6";
data = "HelloWorld!";

byte[] keyValue = sessionuser.getBytes();
Key key = new SecretKeySpec(keyValue, "AES");

System.out.println(key);

Cipher c = Cipher.getInstance("AES");
c.init(Cipher.ENCRYPT_MODE, key);
byte[] encVal = c.doFinal(data.getBytes());

String encryptedValue = Base64.encodeBase64URLSafeString(encVal);
return encryptedValue;
}
<小时/>

返回的加密值 = 48yKDDmHCgotgbTpy3FRag

oracle 12c 代码的加密值为

SELECT (DBMS_CRYPTO.ENCRYPT
(
src => UTL_RAW.CAST_TO_RAW ('HelloWorld!'),
typ => 4096 + 256 +4,--4356, --encryption_type / AES_CBC_PKCS5 = ENCRYPT_AES + CHAIN_CBC + PAD_PKCS5
key => UTL_RAW.cast_to_raw('HVQKcI6yo425a4d6')--, encryption_key
))
from dual;
<小时/>

输出:E3CC8A0C39870A0A2D81B4E9CB71516A将其从十六进制转换为基数 64 后:48yKDDmHCgotgbTpy3FRag==

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

谢谢

最佳答案

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

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

这只是有或没有填充的编码的区别。结果相同,末尾有零到两个等号。

关于java - java和oracle 12c之间的加密值不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50903245/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com