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

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

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

3830 次点击
所在节点    MySQL
57 条回复
yhvictor
2022-04-22 11:23:58 +08:00
我觉得最好是用权限。
改 sql 的人提交前管理 review ,然后管理或者自动化提交。
或者两张表,正常的存 md5 ,另一张只有管理有权限存明文。

实在要用加密的话,google 的 tink 拿来用就是了,无论椭圆曲线还是其他的加密方法都有提供。
另外,对称加密的 cpu 开销更少,就是需要密钥管理。
popok
2022-04-22 11:40:05 +08:00
管理可以用私钥看到用户密码?你们公司可真作妖呢!
wonderfulcxm
2022-04-22 11:54:01 +08:00
@unco020511 有些不懂技术的沙雕老板就是这样的,他们以为的找回密码就是把用户原来的密码发给用户,如果还有一点责任心,不想明文保存密码,只能用这种可逆加密。
deplivesb
2022-04-22 11:58:32 +08:00
「我想管理能看到用户的密码」
这是什么沙雕公司,赶紧报上明 排排雷
zhzy0077
2022-04-22 12:06:37 +08:00
建议数据库照样 hash 落盘,密码单独加密存一个见不得人的地方,然后主管,经理,老板一人一个密码对称三层加密,三个人在一起才能看密码,和银行金库一样安全,完全满足老板的安全心
cncmmdwl
2022-04-22 12:18:25 +08:00
@wonderfulcxm 对的,就是不想在数据库保存明文密码,并且服务器上云,老板怕运维拉着数据跑了,所以想用一种单向加密方式来搞东西
unco020511
2022-04-22 12:20:58 +08:00
@cncmmdwl #26 你说的需求不就是摘要(hash)算法做的事吗,比如 MD5.还有 hash 不是加密,加密没有单向
cncmmdwl
2022-04-22 12:21:18 +08:00
@zhzy0077 前端注册时候不久对密码加密了么,发给后端时候的密码已经是密文状态了,只要比对下是不是一样的就行了,但是领导想看用户密码,所以要一种单向加密方法,思来想去就想到了 rsa ,你这样搞待会密码加密被破好家伙全被看到了
zhzy0077
2022-04-22 12:23:14 +08:00
@cncmmdwl 啥意思 AES 2048 三个对称密钥从不落盘 每次系统启动要求三个人一起输密码才能开机 谁能破你啊
cncmmdwl
2022-04-22 12:23:17 +08:00
@unco020511 hash 无法逆向算密码,rsa 公钥加密的密文可以靠私钥解迷,密码比对只需要使用被加密过的密文解密即可
unco020511
2022-04-22 12:24:16 +08:00
@cncmmdwl "领导想看用户密码",这么无理的要求,好奇你是咋忍下来的
cncmmdwl
2022-04-22 12:25:53 +08:00
@zhzy0077 你这么把密码合适的存到这个隐秘的地方?靠不可信信道?靠对 aes 对密码加密?明文传密码百分百不行,aes 话如果服务器商拿了你的 aes 密匙,等于白加密
zhzy0077
2022-04-22 12:26:28 +08:00
@cncmmdwl 啥意思 这三个密钥服务器开机的时候输入存内存里啊 为啥要交换
cncmmdwl
2022-04-22 12:27:38 +08:00
@unco020511 终有一天跑路的:)
Chad0000
2022-04-22 12:32:51 +08:00
@unco020511 幸好他们不做网盘相册啥的,否则就会来个“领导想看用户果照”,啊。
twing37
2022-04-22 12:35:41 +08:00
看描述.不需要搞这些撒.把权限做好了. 数据备份做好了,非明文. 如果怕内部人员脱库单干,那应对方法可太多了~
能看用户明文密码这个需求太离谱了
zhzy0077
2022-04-22 12:38:50 +08:00
@cncmmdwl 我再说清楚点 就算你 RSA 非对称加密 你私钥总是要存在一个磁盘上的 要满足你这个需求 你首先不能用云服务器 因为服务商能看到你所有的数据 所以你只能在公司或者离你公司比较近的机房买或者租一台服务器 然后对这个服务器磁盘全盘加密 不然别人把你的硬盘接另一台电脑上就全看到了 所以每次开机的时候需要一个信任的人过去输入这个磁盘加密密码 你做到这一步的时候其实和你对称加密没有区别了 因为磁盘加密本身就是对称的。

所以实际上这么做的安全性和每次服务器启动的时候输入一个 AES 密钥 存内存不落盘 客户端 HTTPS 明文上传密码 服务器直接加密了丢 oss 上 没有本质性区别
3dwelcome
2022-04-22 13:25:01 +08:00
楼主的逻辑有问题,你数据库密码用 RSA 公钥加密了,那用户登录的时候,必然需要用私钥去解密密码明文去比对。

万一 RSA 私钥泄漏,那和 AES 密钥泄漏完全是一个意思。
ShallowAi
2022-04-22 14:05:24 +08:00
使用 BCRYPT 单向加密,只能进行验证但是不能逆向获取源密码。
要看用户密码的需求完全是无理取闹,从安全性各种理由下都不合理。
seakingii
2022-04-22 14:14:30 +08:00
你在应用层做这个事不是很简单吗?把加密的数据存在数据库,要用的时候用程序去解密

一定要用 MYSQL 的函数做加密解密?不太清楚有没有现成的 MYSQL 的函数,技术你可以自己写插件来扩展 MYSQL 的函数...

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

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

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

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

© 2021 V2EX