V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
? MySQL 5.5 Community Server
? MySQL 5.6 Community Server
? Percona Configuration Wizard
? XtraBackup 搭建主从复制
Great Sites on MySQL
? Percona
? MySQL Performance Blog
? Severalnines
推荐管理工具
? Sequel Pro
? phpMyAdmin
推荐书目
? MySQL Cookbook
MySQL 相关项目
? MariaDB
? Drizzle
参考文档
? http://mysql-python.sourceforge.net/MySQLdb.html
zealinux
V2EX  ?  MySQL

今天遇到个需求,需要加密数据库(MySQL)表中某些字段,比如手机号,该怎么做?

  •  
  •   zealinux · 2019-05-13 09:44:26 +08:00 · 11750 次点击
    这是一个创建于 1826 天前的主题,其中的信息可能已经有所发展或是发生改变。

    腾讯云最新优惠活动来了:云产品限时1折,云服务器低至88元/年 ,点击这里立即抢购:9i0i.cn/qcloud,更有2860元代金券免费领取,付款直接抵现金用,点击这里立即领取:9i0i.cn/qcloudquan

    (福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

    大家的生产环境中的数据库表也都是加密 手机号吗?

    第一感觉没有这个必要, 加密手机号的操作应该是在应用层来做。

    或者问,要实现这样的数据库层面做,需要怎么做?

    (现在用的 Azure 上的 MySQL 服务)

    30 条回复  ?  2021-07-15 15:54:25 +08:00
    tt67wq
        1
    tt67wq  
       2019-05-13 09:48:09 +08:00
    在数据库加密好点吧,如果被脱裤了起码拿不到手机号
    用个对称加密就行
    xuanbg
        2
    xuanbg  
       2019-05-13 09:54:01 +08:00
    敏感数据集中起来搞一个对象,然后序列化成 JSON 再对称加密后存储。要检索的话另外若干个字段分别存 MD5 就好了了。
    wweir
        3
    wweir  
       2019-05-13 09:55:49 +08:00
    应用层加密,数据库直接存加密后的数据
    airfling
        4
    airfling  
       2019-05-13 10:00:23 +08:00
    对称加密就可以了,我一般都是在程序中加密解密,然后保存到数据库中的是加密后的字段
    xy2401
        5
    xy2401  
       2019-05-13 10:50:04 +08:00
    用视图可以做不?
    julyclyde
        6
    julyclyde  
       2019-05-13 10:55:59 +08:00   ?? 1
    手机号做 hash 无意义
    kiwier
        7
    kiwier  
       2019-05-13 10:58:07 +08:00
    md5 已不安全
    liuzuo
        8
    liuzuo  
       2019-05-13 11:05:17 +08:00
    HASH 一列+加密一列。
    HASH 用来查找,只能精确查找。
    加密用来反解。

    但如果是要求的列多或者服务多,是不是需要考虑 agent 模式。
    dilu
        9
    dilu  
       2019-05-13 11:10:44 +08:00
    我们是这样实现的 数据库存两个字段,一个加密后的,一个类似 salt 的东西,在 model 层封装好。

    然后有个单独的加密解密服务器专门做这个。再麻烦也得做,这种对我们公司来说是强需求。
    Navee
        10
    Navee  
       2019-05-13 11:10:55 +08:00   ?? 1
    37Y37
        12
    37Y37  
       2019-05-13 11:17:59 +08:00
    应用层做,RSA 加密,包括连数据库的账号密码,以及数据库中的敏感数据
    chenset
        13
    chenset  
       2019-05-13 11:27:00 +08:00
    @Navee 我的库也是采用这种 aes 对称加密方式, 效果不错. 应用层和数据库层都有相同的实现, 非常方便. ORM 读写支持 get/set 过滤, 自动加解密. 爽的不行.
    reid2017
        14
    reid2017  
       2019-05-13 11:33:56 +08:00
    @chenset 请教 ORM 如何自动加解密
    mooncakejs
        15
    mooncakejs  
       2019-05-13 11:39:20 +08:00
    @reid2017 估计就是 getter 方法
    chenset
        16
    chenset  
       2019-05-13 11:44:40 +08:00
    @reid2017 ORM 一般都有字段过滤器 /拦截器 /getter setter. 除了写 orm where 条件之类的场景需要手动加解密, 其他都自动了
    chenset
        17
    chenset  
       2019-05-13 11:46:22 +08:00
    这个加密在过国.家等级保护的是必须的.
    jeffdeng
        18
    jeffdeng  
       2019-05-13 12:04:33 +08:00
    @reid2017 扩展 mybatis 的 BaseTypeHandler 类
    enaxm
        19
    enaxm  
       2019-05-13 14:10:46 +08:00
    @julyclyde
    表示接过的联通和移动的接口都是 hash 加密的...
    jswh
        20
    jswh  
       2019-05-13 14:23:30 +08:00
    用不对成加密之后寸数据库,密钥是通过内部接口发放的,需要向公司申请,只能再生产环境拿到。
    ducklyl
        21
    ducklyl  
       2019-05-13 14:40:55 +08:00
    用数据库自带的加密函数即可。
    983081882
        22
    983081882  
       2019-05-13 14:56:03 +08:00
    看到这个我就来吐槽了 我经历的一家公司 就把敏感字段用 base64 编码了一次 论糊弄人简直没有更坑的了
    orangeade
        23
    orangeade  
       2019-05-13 15:11:40 +08:00 via Android
    单独字段,加版本号
    可以再搞个哈希字段方便快速查询
    avenger
        24
    avenger  
       2019-05-13 18:23:00 +08:00 via iPhone
    加密后怎么 like 查询?
    cway
        25
    cway  
       2019-05-13 18:28:34 +08:00
    @avenger 我也,同问,可能不需要 like 查询
    sagaxu
        26
    sagaxu  
       2019-05-13 19:11:32 +08:00 via Android
    从大厂频繁被脱裤看,密码明文保存的都不少,何况是手机号?
    wwek
        27
    wwek  
       2019-05-13 19:25:46 +08:00
    @liuzuo 就是说的方案为佳
    284716337
        28
    284716337  
       2019-05-13 19:32:52 +08:00
    加密后保存,应用取数据的时候解密
    kilvn
        29
    kilvn  
       2020-10-13 19:38:16 +08:00
    https://www.cnblogs.com/songyaru/p/12842671.html

    这个简单的加密解密函数可以看下,撸了一遍还挺香
    lskjdfgl
        30
    lskjdfgl  
       2021-07-15 15:54:25 +08:00
    用数据库的对称加密,还可以做模糊搜索,如果用程序做只能精确搜索了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4345 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 01:01 · PVG 09:01 · LAX 18:01 · JFK 21:01
    Developed with CodeLauncher
    ? Do have faith in what you're doing.


    http://www.vxiaotou.com