可以利用 Java 的 Keystore 做一些数据加解密工作吗?

2024-08-30 10:42:56 +08:00
 BraveXaiver
RT ,Java 开发的客户端想要与远端服务器建立 SSL 连接,就会提供一个 keystore ,这个 keystore 显然其使用证书的私钥,否则应该是无法完成 SSL 认证的。

而这个证书的公钥又是可以暴露的,或者说是必须要公开的。

所以我想的是,利用这个公钥去做加密,将加密的内容写在这个应用的配置文件里,再在程序启动的时候利用 keystore 去解密。这样就不用引入额外的密钥。

但我网上搜了一下,好像完全没有这样的讨论。是我的理解出了偏差,这个是做不到的吗?

如果可以,这里( 1 )利用 keystore 中的私钥去做解密,大家知道 java 代码该怎么写吗( 2 )利用公钥去加密这两部分,大家知道咋写吗?

谢谢!
1467 次点击
所在节点    程序员
4 条回复
ZZ74
2024-08-31 11:58:34 +08:00
Java 开发的客户端想要与远端服务器建立 SSL 连接,就会提供一个 keystore
这一句 9 错了啊,客户端又不是一定要 keystore

利用这个公钥去做加密,将加密的内容写在这个应用的配置文件里,再在程序启动的时候利用 keystore 去解密。这样就不用引入额外的密钥
你这是想干啥?本地加解密? 那你 keystore 的密码呢,启动时要解密 存本地还是启动时从服务器获取? 要是公私都在本地 用对称加密不就好了。 要是 keystore 放客户端...我不知道该怎么描述。
henix
2024-08-31 16:50:03 +08:00
感觉你对 https 证书有一些误解。
“利用这个公钥去做加密,将加密的内容写在这个应用的配置文件里,再在程序启动的时候利用 keystore 去解密”
这个说法没错,但能这么做的前提是,这个程序正好是一个 https 网站的服务端

服务器的 keystore 保存了只有服务器才有的私钥和公钥,进行 https 连接握手时,客户端连接到服务端,服务端会先把自己的公钥发给客户端,然后客户端用这个公钥进行加密操作。所以客户端的 keystore 不需要保存任何私钥
BraveXaiver
2024-08-31 19:25:18 +08:00
@ZZ74
@henix 嗯,确实说少了。我是说那种需要双向 SSL 验证的 API 。
Shoukaku
2024-09-01 15:43:38 +08:00
当然是可以的,但是现实中为了提高安全性,加密和认证的密钥不应该混用。而且你这是典型的本地对称密钥该干的事情,没必要为了省一个密钥,搞这么复杂,KeyStore 可以存 SecretKey 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1068961

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX