不同Java服务中密封对象的加密和解密抛出classNotFoundException

问题描述 投票:0回答:1

我正在下面使用AES加密员工类,并将其另存为sealA作为serviceA的一部分。

org.company.serviceA.model.employee;
class employee{
Integer ssn;
String name;
}

org.company.serviceB.model.employee;
class employee{
Integer ssn;
String name;
}

并且在serviceB中,当我尝试将密封对象解密回员工类时。

employee emp = (employee) sealedObject.getObject;

引发ClassNotFoundException并说找不到org.company.serviceA.model.employee。

很明显,即使我在serviceB中创建了类似的类,它也试图通过完全限定的名称查找ServiceA的雇员类。

当加密和解密都在同一服务中完成时,它可以正常工作。但是,当它们在不同的服务中完成时,解密将引发ClassNotFoundException。

所以有办法克服ClassNotFoundException并解密serviceB中的密封对象吗?

java encryption cryptography classnotfoundexception sealed-class
1个回答
0
投票

您要么使用相同的类/源代码,要么必须考虑另一种方式来编码/解码员工类。 Java始终在内部使用完整的类名。


例如,您可以创建自己的序列化方法。

或者,您可以简单地加密/解密围绕人创建的字节数组。以某种方式将X500 / LDAP元素用于编码/解码将很有意义-但是,这比直接回答更是研究方向。

最后,我想以规范的方式直接将字节编码/解码为字节的任何事情都符合要求。

© www.soinside.com 2019 - 2024. All rights reserved.