当前位置: 首页 > 面试题库 >

如何在春季重写JndiObjectFactoryBean并在Java中设置解密密码

袁雅逸
2023-03-14
问题内容

我在tomcat中有一个数据源,该数据源具有使用某种算法加密的密码,我想在与数据库建立连接时解密该数据源。

以下是我的春季配置代码

<!--<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="${jdbc.jndiName}"/>
</bean>-->

<bean id="dataSource" class="my.app.util.EncryptedDataSource">
    <property name="jndiName" value="${jdbc.jndiName}"/>
</bean>

上面的bean是自定义的,它扩展了JndiObjectFactoryBean

public class EncryptedDataSource extends JndiObjectFactoryBean{ ... }

我在这里应该怎么做才能得到加密的密码并将其重新设置。我有我的解密算法,但是我不确定哪种超类方法会为我获取可以重新设置的密码。

请建议,我已经搜索并尝试了很多。


问题答案:

我弄清楚了,我使用了tomcat数据源的“
factory”属性,而不是覆盖JndiBeanFacotry,它允许您有一个html" target="_blank">自定义资源工厂类,该类在每次实例化数据源查找时都会被调用。

下面的链接指定了逐步配置,

http://tomcat.apache.org/tomcat-6.0-doc/jndi-resources-
howto.html

“添加自定义资源工厂”一节重点介绍如何编写简单的自定义资源工厂。

谢谢。



 类似资料:
  • 问题内容: 我在Java中有一个加密代码。我正在尝试将加密部分移植到节点。基本上,节点将使用crypto模块进行加密,然后Java将进行解密。 这是我在Java中进行加密的方法: 这是我在节点中进行加密的方法: 在Java中,我得到了string 。这将正确解密。但是,在node中,我得到了明显不同的内容,因此无法正确解密。 我试图寻找与我有相同问题的人,而这个 github问题是我所能找到的最接

  • 我正试图解密一个从Azure存储中下载为ByteArrayOutputStream的文件。 我有一个类型为ByteArrayOutputStream的流。我如何解密它并返回解密的ByteArrayOutputStream? 我尝试过使用CipherOutputStream,但我不确定如何使用它。

  • 问题内容: 我需要用openssl生成的和密钥替换从Unix到Java代码的加密和解密步骤 我生成密钥 我在Unix中使用键(我需要在Java中执行) 这是我的尝试 但它不起作用,PKCS8EncodedKeySpec / X509EncodedKeySpec不正确…但是我不知道该放什么 问题答案: 我认为您在读取PEM文件时遇到问题。JPA不直接支持PEM格式。您有两种选择,要么将它们转换为DE

  • 问题内容: 我编写的使用3DES在Java中对字符串进行编码的每种方法都无法解密回原始字符串。是否有人有一个简单的代码片段,可以对字符串进行编码,然后再将其解码回原始字符串? 我知道我在此代码中的某个地方犯了一个非常愚蠢的错误。到目前为止,这是我一直在努力的工作: 注意,我不是从crypto方法返回BASE64文本,也不是在解密方法中不是对base64进行未编码的,因为我试图查看我是否在BASE6

  • 我目前正在一个Java项目中实现忘记密码功能。我的方法是, > 用户单击忘记密码链接。 在忘记密码页面中,系统提示用户输入他/她在系统中注册的电子邮件地址。 包含给定电子邮件地址和重置密码页面链接的电子邮件。 用户单击链接,他/她会被重定向到一个页面(重置密码),用户可以在其中输入他的新密码。 在重置密码页面中,“电子邮件地址”字段自动填充,并且由于其被禁用,因此无法更改。 然后用户输入他的新密码

  • 问题内容: 我的问题是,我无法在Java中正确解密。尽管使用了正确的密钥和IV,解密后我仍然得到垃圾字符。我在Java中没有任何编译/运行时错误或异常,因此我相信我使用正确的参数进行解密。 Python加密代码- Java解密代码- 有什么明显的我想念的东西吗? 问题答案: 的操作的密码反馈(CFB)模式是模式家族。它由段大小(或寄存器大小)参数化。PyCrypto的默认段大小为8位,而Java(