看了下源码实现。使用的是privateKey加密,publicKey解密,而且密文和publicKey都可以通过配置文件取得,用ConfigTools.decrypt(publicKey, 密文)不就解密出来密码了?
这里看出来明显publicKey和密码都在一起的。
原提问者GitHub用户lsgggg123
Druid是一种开源的高性能数据库连接池,它支持对数据库密码进行加密存储,以提高数据库的安全性。在Druid中,可以使用以下方式对数据库密码进行加密:
在配置文件中指定加密密钥
在Druid的配置文件中,可以通过以下方式指定加密密钥:
Copy
druid.filters.config.decrypt.key=myKey
在这个配置中,myKey是自定义的加密密钥。指定了加密密钥后,Druid就可以使用这个密钥对数据库密码进行加密。
对数据库密码进行加密
在配置文件中指定加密密钥后,可以使用以下方式对数据库密码进行加密:
Copy
druid.password=ENC(加密后的密码)
在这个配置中,加密后的密码是使用指定的加密密钥对原始密码进行加密得到的。可以使用Druid提供的druid-encrypt工具对密码进行加密,例如:
Copy
java -cp druid-1.2.6.jar com.alibaba.druid.filter.config.ConfigTools myPassword
在这个命令中,myPassword是原始密码,运行命令后,就会输出加密后的密码。将加密后的密码复制到配置文件中即可。
根据你提供的截图,确实可以看到在Druid的配置文件中,公钥和密码都存在,并且可以直接通过配置文件获取。
Druid使用非对称加密算法(如RSA)来保护密码的安全性。在配置文件中,使用公钥加密密码,并将加密后的密码存储在配置文件中。应用程序在需要使用密码时,通过私钥解密被加密的密码来获取明文密码。
然而,如果公钥和密码都可以轻易地从配置文件中获取,确实存在一定的安全风险。通过配置文件中的公钥和加密过的密码,使用ConfigTools.decrypt方法可以轻松地解密出明文密码。
为加强安全性,务必确保保护私钥的机密性,以防止未授权访问。私钥应严格限制访问权限,并妥善保管。此外,建议将公钥存储在安全的地方,以防止不必要的公开。
如果你对Druid的密码加密机制和安全性有进一步的疑问或需要更多建议,请考虑与Druid的官方支持团队或社区进行联系咨询,他们应能为你提供更准确和详细的解释和指导。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。