laravel加密手机号以后手机号如何做登录校验

着实是想不通了,所以来社区请教一下各位大佬,
laravel的加密同一串字符串会发生变化,因为向量iv是随机值
目前我这的情况是使用手机号作为账号登录,手机号又需要加密存进数据库,那我用户校验登录的时候应该怎么校验手机号呢?
如果是新加一个字段用来存手机号的哈希,那是不是也不能用laravel的hash而是要自己重新写一个。

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 22

哈希加密后的值会变化,但是调用验证方法 check 还是能验证通过的。 跟验证密码一个道理:

if (Hash::check('plain-text', $hashedPassword)) {
    // The passwords match...
}

注意:验证思路不是通过每次加密后的密文和数据库存储的密文进行比较的,而是通过 check 方法进行验证。

1年前 评论
忆往昔弹指间 1年前
快乐的皮拉夫 (作者) 1年前
忆往昔弹指间 1年前
wangtufly (楼主) 1年前

只能查出用户数据比对手机号是不是这个用户的

1年前 评论
wangtufly (楼主) 1年前

来学习一下,感觉不管怎么做都很麻烦,感觉如果是我会在用户注册更高后 在redis里存一下手机号 用户id,加密向量,登录时根据手机号去,取这些的值,然后和数据库手机号对比 和数据库密码对比 应该可以实现你的需求 就是很麻烦 应该有更好的方法

1年前 评论

手机号还是好的呢, 有的字段需要加密,还需要支持查询, 这种的不会呢

1年前 评论

对称加密啊,比如md5

1年前 评论
sanders

直接用 openssl_encryptopenssl_decrypt 进行加解密。

1年前 评论

m.toutiao.com/is/Us6AEHA/ - 加密后的敏感字段还能进行模糊查询吗?该如何实现? - 今日头条

1年前 评论
wangtufly (楼主) 1年前
空巢搬砖仔 1年前

除了 密文 外,再弄加一个对应的 hash 列,查询的时候把传入的手机号进行 hash ,然后去数据库根据 hash 拿到就行了。

另外,hash 时最好要加上个 slat,这个 slat 最好不要是固定值,可以与原文有关也行。

举个例子:

// 原文
$phone = post('phone');

// 这两个都存起来,下次查找的时候,根据 hash 去查找就好了
$phoneEncrypted = encrypt($phone);
// 后面部分主要目的时加 slat
$phoneHash = sha1($phone . base64_encode($phone) . md5($phone));
1年前 评论
wangtufly (楼主) 1年前
云客网络工作室

手机号真实数据可以使用加密,然后再增加一个 md5的手机号信息,检索可以md5之后检索,取出来的话就解密出来。md5加密可以加个盐嘛

1年前 评论

目前有两只解决方法,一是重写一下内置的加密,变成固定向量的。二是加一列哈希,这两种方法在便利以及安全程度上考虑我觉得替换一下原方法更好一些

1年前 评论

为啥不采用 SM4 加密,可加可解,你这样存起来手机号以后都不用啦?

1年前 评论
wangtufly (楼主) 1年前

加解密使用非对称加密就行

1年前 评论
1.只考虑你目前的需求
不要把注意力放在加密手机号上面,你需要的是登录手机号验证时,快速查找到对应的手机号记录,新增字段做hash或者自定义的算法根据手机号生成唯一标识,算法结果长度应是固定且较短的(可以考虑用char类型存储),设置索引便于数据库查询,同时减少存储时的文件碎片,密文一般较长,作为加密的结果,如果是双向加密,势必业务上会有解密,不过也仅只是应用在业务加解密上,对于数据库层面来说,用密文查询校对,这么设置是不合理的,尤其是大数据表。
2.后续扩展
从前台到后台,用户是个重要的业务模块,都有可能需要展示用户的手机号(脱敏展示)或者用于营销业务(例如发短信等),方便运营操作,所以解密密文,所需要的key、iv、加密算法等等,理论上也要存储的,因为后续一旦更改key、iv、加密算法,解密就会有问题,iv是否随机这个对于你目前的业务来说,其实是无关紧要,它影响的只是一定的密文安全性。
1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!