mysql 有什么类似 rsa 的加密手段么?

2022-04-22 00:41:08 +08:00
 cncmmdwl

我想管理能看到用户的密码,能接触的 sql 的人看不到,password 和 md5 都是单向加密的,aes 加密解密密匙都是一把不安全,有没有什么函数能实现对密码进行 rsa 加密,管理去数据库拿用户的 password 使用私钥解码用户的实际密码?

4141 次点击
所在节点    MySQL
57 条回复
Jooooooooo
2022-04-22 00:42:58 +08:00
搜 kms
cncmmdwl
2022-04-22 00:51:11 +08:00
@Jooooooooo 不想加产品,有没有可能使用本地计算,比如本地计算好公钥,私钥,上传服务器只上传公钥,用户注册时候调用用户的密码用公钥加密后存 mysql 里面,这样用户再次登录时候就直接使用用户密码 rsa 加密后与 mysql 里面的密文做个判断,这样运维就拿不到密码,但是管理开源拿私钥解码密码。
Jooooooooo
2022-04-22 01:05:58 +08:00
@cncmmdwl 我的意思是你搜一下 kms 的思路, 应该是有可以借鉴的.
dzdh
2022-04-22 01:18:52 +08:00
给数据加密,还是连接加密。

数据加密,mysql 不带 rsa 加解密可能有插件没接触过。实现需求可能需要改造业务,业务上实现。

单说你需求 aes 和 rsa 没啥区别,私钥漏了还是一样的。人的问题更多点吧。
Rocketer
2022-04-22 01:20:03 +08:00
没看出这跟 mysql 有什么关系,你需要的是一种稳定的非对称加密算法。

首先排除 RSA ,因为 RSA 加盐,同样的内容每次加密结果不一样。
cncmmdwl
2022-04-22 01:20:50 +08:00
@Jooooooooo 我看了这个玩意,确实这个思路不错,我打算用 php 弄这个,但是生成一个合适的 rsa 好像又不太好弄,现在大多数 rsa 好像都已经上 2048 位了,这样话加密出来的密文好像就比较大了。
timpaik
2022-04-22 01:26:23 +08:00
需求是什么?这种功能建议醒目提示用户
liuidetmks
2022-04-22 07:12:13 +08:00
@cncmmdwl 尝试下 使用椭圆曲线加密,根据的用户名 sha256 作为临时私钥,和管理的公钥做 ecdh ,结果作为 aes 密码,这样密文长度和原始长度一样了。


更安全方式是,每次使用随机公钥做 ecdh ,这样即使同样密码,加密结果也不同。
jy28520
2022-04-22 07:15:51 +08:00
用用户的密码加密一个公用的内容 然后存入数据库
验证密码的使用用用户的密码解密这个内容 如果成功就是密码正确否则就是密码不正确
liuidetmks
2022-04-22 08:43:16 +08:00
@liuidetmks 好嘛,用户名作为临时私钥不可行,临时私钥必须销毁,要保留的是临时公钥

还是每次生成一个临时公钥对私钥和公钥( s,P0 )临时私钥 s 和 你的公钥 P1 生成 aes 加密 key 加密密码为密文 E,
P0+ E 组成最终密文, 销毁 s. 其中 P0 的长度应该是 33 字节

解密过程就是用你的私钥 s1 和上面的临时公钥 P0 同样可以获取到 aes 加密 key
unco020511
2022-04-22 09:16:46 +08:00
什么需求需要可逆性保存密码我是想不到的
chenzheyu
2022-04-22 09:59:38 +08:00
这个不是应该是框架提供的吗?存 sql 的是对称加密的数据,取出来再对称解密啊
cncmmdwl
2022-04-22 10:15:47 +08:00
@timpaik 之前其他公司不是有过密码泄露问题么,我怀疑那些公司就是明文存密码,但是好像也不是,但是确实又有密码泄露问题,那么那些明文密码的黑客是如何搞到的?
cncmmdwl
2022-04-22 10:16:44 +08:00
@dzdh mysql 库有第三方运维,链接本来就加密,不想给运维看用户数据而已
cncmmdwl
2022-04-22 10:18:17 +08:00
@chenzheyu 服务器提供商不可信的情况下我觉得对称加密不太妙
wangyu17455
2022-04-22 10:37:54 +08:00
新建用户,然后新建 view ,在 view 里解密,然后把这个 view 只授权给你创建的用户
wangyu17455
2022-04-22 10:41:04 +08:00
但是每次查 view 都带着解密的密码好像也不安全
chenzheyu
2022-04-22 10:45:02 +08:00
@cncmmdwl 如果你的服务商都不可信的,那用户输入的那一刻不就知道密码了
cncmmdwl
2022-04-22 10:49:19 +08:00
@chenzheyu web 页面 这个功能打算上线到用户端,网页登陆用公钥加密后送进服务器,这样就不存在问题了
dzdh
2022-04-22 11:16:47 +08:00
那搜索可咋做哦。仅某些字段加密么

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

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

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

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

© 2021 V2EX