求数据库加密方案
关于数据库加密的疑问?
1.使用过加密方式
就我目前使用过的就只有字段级别的加密,也就是常见的用户隐私数据、密码等信息进行了加密。比如是laravel
提供的Hash::make()
的加密,但是这种加密方式不可逆,只适合对密码进行加密。
2.了解过的加密方式
从GPT
上传得到的内容如下:
加密存储引擎:MySQL 提供了一些加密存储引擎,如 InnoDB,可以加密整个表空间,包括数据和索引。这种方法对数据库内部的数据进行加密。
字段级加密:你可以选择只加密部分敏感字段,而不是整个表。这可以通过在插入和选择时使用加密和解密函数来实现。
外部加密库:使用外部加密库(如 OpenSSL)在应用层对数据进行加密,然后将加密后的数据存储在数据库中。
Transparent Data Encryption (TDE):虽然 MySQL 本身没有原生的 TDE 功能,但你可以使用操作系统的加密功能来对整个数据库文件或文件系统进行加密。
加密网关:通过加密网关作为数据库访问的中间层,可以在传输过程中对数据进行加密和解密。
第三方加密库:一些第三方加密库提供了更高级的加密方法和算法,你可以选择使用它们来加密数据。
应用层加密:你可以在应用程序中对数据进行加密,然后将加密后的数据存储在数据库中。
数据加密代理:使用数据加密代理来处理数据库请求,它会在数据库和应用之间进行数据加密和解密。
硬件加密设备:一些硬件设备提供了数据库加密的解决方案,可以在硬件级别上加密和解密数据。
3.我想要的或者说我的最终目的
就算是拿到了我服务器的权限、拿到了我的数据库文件,也不会将信息泄露。
为什么会有这么变态的要求 :joy:
提问的智慧
整个数据库的数据都进行加密 ?
自增主键也要加密吗?学生弱弱的问问楼主做什么项目?
建议头给他打断,这种傻逼需求。
建议头给他打断,这种傻逼需求。
我们就做了,好几种办法。 一种阿里rds有这个付费服务。 二种,就是自己在model层set入库前做加密,如果有特殊的写法的地方,那就单独加密。网上有很多例子,读取的时候解密
laravel自带的对称加密方法: use Illuminate\Support\Facades\Crypt;
$encryptedData = Crypt::encryptString('Sensitive data');
$decryptedData = Crypt::decryptString($encryptedData);
符合前两条的有吗
只能手机号,身份证号关键信息加密了。要不然性能太差
其实拿到服务器权限说什么加密解密有什么用。真正重要资料直接删库删表就不怕了。如果为了任务 1.应用层读取时解密,写入时加密,使用对称算法。 2.mysql innodb插件支持。 2种方法都有优劣势。
对称加密就行吧
之前项目中使用过,可以看看这个:翻译:[Laravel 扩展推荐] 加密/解密 Laravel 中的 Eloquent 模型字段
一般只加密敏感信息,如用户手机号、邮箱、收件地址,平台账号,符合等保要求即可。
我一般用国密sm4 对关键数字加密,但加密后一般都不到持摸湖查询的,要实现自己单独建个表做分词加密,然后关键字用wherHas 关联查询
msyql 有自带的加解密