跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • druid 对数据库密码进行加密的疑惑点。
未分類
7 10 月 2020

druid 对数据库密码进行加密的疑惑点。

druid 对数据库密码进行加密的疑惑点。

資深大佬 : different 3

参考资料:

https://www.w3cschool.cn/wqf_java/wqf_java-7gu82mu3.html

https://www.cnblogs.com/wuyun-blog/p/5674244.html

我看到 druid 对数据库密码进行加密大概过程就是:

把运行 jar 包对明文密码进行加密,生成了公钥、私钥、密文。

然后把公钥、密文放进配置文件中。

end.

从中我看到,可以通过公钥、密文就能解密出明文了。

有几个小疑惑:

  1. 非对称加密中,不是通过私钥、密文解出明文吗?这里怎么是公钥、密文->明文

  2. druid 的配置中把公钥、密文写到配置文件里面了,而根据这两个又能解密出明文。假设我拿到这两个字段,在我本地环境跑一下,我不也很简单解密出明文吗?这个加密后的意义在哪里?都不藏一下,这解密有啥门槛吗?

谢谢大家。

大佬有話說 (17)

  • 資深大佬 : lijialong1313

    公钥加密,私钥解密,私钥加密,公钥解密。

    我觉得是公钥密文要分开放的,这样不容易拿到。

  • 資深大佬 : AmosAlbert

    公钥加密,私钥解密

  • 主 資深大佬 : different

    @lijialong1313
    @AmosAlbert
    我看它加密完了,好像就不需要私钥了,这是怎么肥事?

  • 主 資深大佬 : different

    @lijialong1313
    第二个疑问能否解惑一下?#dog

  • 主 資深大佬 : different

    @lijialong1313 不好意思,我看回答不仔细,尴尬。

  • 資深大佬 : chendy

    https://github.com/alibaba/druid/blob/master/src/main/java/com/alibaba/druid/filter/config/ConfigFilter.java
    注释里大概解释了一下用法
    加密后的数据和秘钥放一起等于没加密,一般只留下加密后的数据,秘钥放在另外的地方

  • 資深大佬 : kangsheng9527

    少用人家集成环境、框架开发,尽可能地使用原生,问问题不要局限于某种语言的方式去问。
    对数据库内的密码加密方式很简单,如果自己的业务 cpu 空闲度较高的那么直接使用挑选 3 到 4 个常用不同的 hash 方式去加密即可。。。
    如果密码来源于客户端还需要在客户端传送密码前加密至少一次才传输,基于“世上没有好人”,什么包括 https 都是不可信的,所以要先加密至少一次再传输。。。

  • 資深大佬 : xiangyuecn

    一般是公钥加密,私钥解密。少有私钥加密,公钥解密(很多语言的开发包也没有提供这种)。

    如果你不能保证私钥的安全,密文怎么存都是有被解密的风险的。

    为啥不用私钥解密?因为主要是用私钥签名,公钥验证。公钥公钥:可以公开的密钥

  • 資深大佬 : yeqizhang

    对于二,我只能理解为提高获取密码的一点复杂度,不让人肉眼看到密码……然后有些公司代码需要第三方工具来扫描漏洞,明文密码不让通过

  • 資深大佬 : jim9606

    这些所谓加密都是障眼法,防止二进制包用文本扫描工具把密码扫出来而已。

    看了下代码,旧版本直接在代码里硬编码了密钥,所以就不用配置公钥了,新版换成现场生成,不过其实没区别。

    RSA 的加密算法和解密算法是完全一样的,所以密钥对里哪一个是是公钥取决于你公开哪一个。你可以用私钥加密公钥解密(这是签名的工作模式,druid 用的是这个模式,配置文件要填密文和公钥),也可以公钥加密私钥解密(这是一般意义加密的工作模式)

  • 主 資深大佬 : different

    @chendy
    @kangsheng9527
    @xiangyuecn
    @yeqizhang
    @jim9606 获益良多!非常感谢,我大概清楚了。

  • 資深大佬 : qwerthhusn

    感觉这东西作用不大

  • 資深大佬 : xiangyuecn

    @jim9606 #10 有区别的,虽然理论上是就两个大数运算,可以用 e 或 d 来加密都可以。

    但实际上不是这样的,公钥 e 一般等于 65537,用 e 来加密 和 用 d 来加密的速度那是天壤之别。

    另外 私钥 d 是通过 e 作为参数来计算出来的,所有用 d 来加密数据,并不太科学的感觉。

    RSA 学习了很长时间,产出两个开源库: https://github.com/xiangyuecn/RSA-csharp 还有一个 java 版的

    druid 对数据库密码进行加密的疑惑点。

  • 資深大佬 : jim9606

    @xiangyuecn 事实标准确实不存在选 e 还是 d 的问题。

    密码学库麻烦的是还要考虑各种时序和长度攻击的问题,自己写来练习还可以,实现的话还是用现成的好。

    而且都 2020 年了如果不是为了兼容,都应该换用 Curve25519 或者其他 PQC 算法了。

  • 資深大佬 : Aresxue

    这个主要是为了应付安全扫描,避免数据库用户密码明文裸奔,实际上用加密串半分钟就能解出来用户密码,设置这么简单是因为这种场景下加密太复杂反而会影响启动速度,真正保护数据库其实还是靠的网络层内网隔离

  • 主 資深大佬 : different

    @Aresxue 感觉这个网络隔离也只能是防止从外网暴力破解。如果能进入应用服务器了,好像弄个加密稍微能拖延一下时间。

  • 資深大佬 : Aresxue

    @different 差不多是这样子。。。但是阿里的内网只听说道哥进去过。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具