android 上,大家有用 BCrypt 算法给用户密码加密的么? help!!!!

2017-03-16 20:39:55 +08:00
 stewforani
大家有在 android 客户端给用户密码用 bcrypt 加密的么?我拷了 bcrypt 的 java 源码,但是加密很耗时,有什么好办法减少加密时间么?
8292 次点击
所在节点    Android
47 条回复
lhbc
2017-03-16 21:08:06 +08:00
用 SHA256
egen
2017-03-16 21:11:17 +08:00
bcrypt 可以调节复杂度的呀,你设置了多少?
stewforani
2017-03-16 21:12:00 +08:00
@lhbc 如果服务器用的是 bcrypt 保存密码,那么客户端这边需要怎么处理密码?
stewforani
2017-03-16 21:12:21 +08:00
@egen 是哪个参数 你知道吗?
cevincheung
2017-03-16 21:14:18 +08:00
@stewforani #4 cost
stewforani
2017-03-16 21:15:04 +08:00
@cevincheung 什么意思?大神
egen
2017-03-16 21:18:44 +08:00
@stewforani #4
不知道你用的是哪个库,一般会有一个 ROUNDS 参数,默认的可能是 10 或者 12 ,你可以调低到 8 看看,一般有效值会在 4 到 31 之间。
调整 rounds 参数不会影响旧密码的解密,如果后面你觉得可以性能上来了可以再调高然后更新旧密码即可。
maemual
2017-03-16 21:53:56 +08:00
给服务端做啊,干嘛要在客户端做。
AbrahamGreyson
2017-03-16 21:56:55 +08:00
楼上说得才是真理,客户端环境不可控,离复杂度设置多少都不合适。
yidinghe
2017-03-16 23:39:02 +08:00
BCrypt 的本质就是要耗电,所以如果楼主不想让用户看到自己在耗电名单上名列前茅的话。。。
honeycomb
2017-03-17 00:26:18 +08:00
@stewforani
现在还有新的 argon2 算法
yangqi
2017-03-17 00:27:40 +08:00
上 https 然后服务器端加密
lslqtz
2017-03-17 01:47:53 +08:00
@maemual 在客户端做有两个优点。
1 、减轻服务端负担。
2 、防止中间人攻击。
而无论何种方式,在客户端受到攻击的情况下都没有意义
maemual
2017-03-17 08:28:44 +08:00
@lslqtz 1 、服务端还不需要节省这种负担
2 、如果会被中间人,被人截获密码和被截获 bcrypt 之后的结果并没有什么区别
lhbc
2017-03-17 08:49:00 +08:00
@maemual 2. 避免大批量泄漏明文密码。最好就是在客户端 hash 一次,服务器加 salt 再 hash 若干次。
lslqtz
2017-03-17 08:54:55 +08:00
@maemual 服务器加密的性能同样有限
maemual
2017-03-17 08:56:39 +08:00
@lslqtz #16 服务端性能不够可以靠堆机器解决,客户端性能不够准备靠堆什么解决。更何况还没听说哪家穷到连跑 bcrypt 能成为性能瓶颈的。
maemual
2017-03-17 08:57:06 +08:00
@lhbc #15 你了解 bcrypt 么?
Inside
2017-03-17 08:57:29 +08:00
@lhbc 为何不干脆 https ?
momocraft
2017-03-17 09:04:18 +08:00
同感,想不出在客户端做 bcrypt 有意义的场景

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

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

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

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

© 2021 V2EX