我一直在使用 AES 加密来验证用户身份。但最近遇到了一个问题,当用户升级其产品并尝试使用其凭据登录时,向 jboss 抛出以下错误消息:
11:17:02,907 INFO [stdout] (ajp-/0.0.0.0:9009-1) Caused by: aesdpapi.AesDataProtectionAPIException: A native error occured in function 'UnprotectData'. Error 87 : The parameter is incorrect.
11:17:02,907 INFO [stdout] (ajp-/0.0.0.0:9009-1)
11:17:02,907 INFO [stdout] (ajp-/0.0.0.0:9009-1) at aesdpapi.AesDataProtectionAPI.unprotectDataNative(Native Method)
11:17:02,907 INFO [stdout] (ajp-/0.0.0.0:9009-1) at aesdpapi.AesDataProtectionAPI.unprotectData(AesDataProtectionAPI.java:348)
11:17:02,907 INFO [stdout] (ajp-/0.0.0.0:9009-1) at com.gehcit.cp.security.bo.impl.LDAPAuthenticationModel.decryptLdapPasswordUsingAES(LDAPAuthenticationModel.java:348)
11:17:02,907 INFO [stdout] (ajp-/0.0.0.0:9009-1) at com.gehcit.cp.security.bo.impl.LDAPAuthenticationModel.getRSAPasswordFromAES(LDAPAuthenticationModel.java:326)
11:17:02,907 INFO [stdout] (ajp-/0.0.0.0:9009-1) at com.gehcit.cp.security.bo.impl.LDAPAuthenticationModel.decryptLdapPassword(LDAPAuthenticationModel.java:312)
11:17:02,923 INFO [stdout] (ajp-/0.0.0.0:9009-1) at com.gehcit.cp.security.bo.impl.LDAPAuthenticationModel.loadLDAPAttributes(LDAPAuthenticationModel.java:229)
11:17:02,923 INFO [stdout] (ajp-/0.0.0.0:9009-1) at com.gehcit.cp.security.bo.impl.LDAPAuthenticationModel.<init>(LDAPAuthenticationModel.java:186)
11:17:02,923 INFO [stdout] (ajp-/0.0.0.0:9009-1) at com.gehcit.cp.security.bo.impl.AuthenticationModelFactoryImpl.createInstance_aroundBody0(AuthenticationModelFactoryImpl.java:49)
11:17:02,923 INFO [stdout] (ajp-/0.0.0.0:9009-1) at com.gehcit.cp.security.bo.impl.AuthenticationModelFactoryImpl$AjcClosure1.run(AuthenticationModelFactoryImpl.java:1)
11:17:02,923 INFO [stdout] (ajp-/0.0.0.0:9009-1) at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149)
11:17:02,923 INFO [stdout] (ajp-/0.0.0.0:9009-1) at com.gehcit.cp.aop.monitor.MonitoredClassAspect.run(MonitoredClassAspect.java:53)
aesdpapi 是我的自定义库,用于存储 AES 相关文件。我需要知道为什么会出现此异常,导致此异常的可能原因是什么。
我怀疑新版本正在使用新 key 来解密用户密码,该用户密码是在升级产品之前使用旧 key 加密的。升级后生成了新的 key ,无法解密旧 key 加密的密码。
最佳答案
这是由于 Java key 存储文件和证书文件不匹配而发生的。
关于java - 使用 Java 的 AES 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59261710/