Skip to content

Latest commit

 

History

History
77 lines (45 loc) · 2.81 KB

2015-04-04-how-to-encrypt-phone-and-email.md

File metadata and controls

77 lines (45 loc) · 2.81 KB
layout title description date category tags
post
我们是如何加密手机号和邮箱的
手机号加密算法和邮箱加密算法,格式保留加密
2015-04-04 13:20:20 -0700
技术
手机邮箱 加密 隐私 安全

为何要加密手机和邮箱

手机号和邮箱都属于个人隐私信息,如果这些泄露很容易信息会给用户带来不必要的骚扰。(快递行业的事情管不了)

目前多数网站和应用对手机和邮箱都是明文存储的,读取和管理都很方便,但是不够安全(万一数据库泄漏..漏..了呢, 比如CSDN ,12306,学信网,还有各大高校的各种网站数据库等发生过什么,想必都知道)。

至少要保证数据库管理员直接拿着数据库也无法得到真实的信息。

在不影响大家使用的便捷的前提下把安全做到极致,一直是我们的追求。(资源和条件有限)

手机号和邮箱应该怎样加密

手机号邮箱邮箱不同于密码加密:

手机号和邮箱加密后要可还原,而密码就不用了;

再者手机号和邮箱的敏感性要稍微低于密码。

根据实际情况,绑定的手机和邮箱不应该出现重复现象,因此可以快速查重

把手机号进行可逆加密使得加密之后看起来仍然像一个手机号:

为什么要加密的还是像一个手机号或者邮箱

  1. 多数系统的数据库字段是这么设计的,
  2. 对于做黑产者(窃取倒卖数据库的人)而言,真手机号和假手机对他们的意义是一样的

例如

手机号 ABCDE@mail.yunyin.org ==> XYZ1223@mail.yunyin.org

邮箱 18222345678==>18217151132

加密算法

  • 核心采用 AES 加密算法
  • 基本思想 格式保留加密

邮箱加密算法

如图

邮箱加密算法示意图

核心是部分AES加密->重新编码->拼接

可根据密文直接查重

解密过程倒过来进行即可

手机加密算法

经过多次修改如图 手机加密算法示意图

因为对于手机的保密性要求更高,所以对手机加密算法更复杂

为了保证每次手机号数字对数字的“无规律”一一映射,这里采用密码表的设计来实现一一对应。遍历4位数(1万个键值对),在时间和性能上均可接受。

其中使用了两个密钥和两个混淆参数,全部爆破几乎不可能。

尾号四位全局统一加密,可以通过相同尾号查找手机号或者去重;

中间六位单独混淆加密,每个的加密映射方法都不一样(每个人的密码表都是不同的)。

加密算法开源地址 https://github.com/nkumstc/print/blob/master/Common/Common/Encrypt.php,欢迎指出问题