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

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

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

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

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

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

© 2021 V2EX