Java 的 sha1 加盐 加密和 node 实现的加密值不一样。

2017-12-19 19:58:47 +08:00
 dennisge

通过 java 的 sha1 加 salt 加密,和 node crypto 生成的加密值不一致。有踩过坑的吗?

9505 次点击
所在节点    Node.js
55 条回复
dennisge
2017-12-20 08:30:04 +08:00
@ryd994 恩,因为 java 代码是以前别人 java 实现了。现在我们要 node 重写,只能按以前的破逻辑重写了。不过你说的 bcrypt 会更好吗,还会引入 node-gyp
dexterlei
2017-12-20 09:08:06 +08:00
我的经验是,总可以发现是自己写错了
dennisge
2017-12-20 09:26:22 +08:00
@zhicheng 感谢大神,终于成功了!!
kohos
2017-12-20 09:31:29 +08:00
这种加盐迭代 sha1 的方法应该就是 pbkdf2 算法吧……恭喜解决问题
dennisge
2017-12-20 09:39:15 +08:00
@kohos 对啊,node 现在建议的也是 pbkdf2。我看 @zhicheng 的文章也是。但因为重写 java 的实现,不能改以前的逻辑。
vefawn1
2017-12-20 09:46:38 +08:00
我很好奇,为何打开这个页面后网页背景变黑了?
x7395759
2017-12-20 10:12:38 +08:00
@vefawn1 node 节点自带出场背景

原则 2:所有编程的技术问题,统统自己找答案
pusadao
2017-12-20 10:21:56 +08:00
const crypto = require('crypto')

const sha1 = crypto.createHash('sha1')
const salt = new Buffer('af350c3413179ab4', 'hex')
const origin = new Buffer('a123456')
sha1.update(salt)
sha1.update(origin)
let result = sha1.digest()

for (let i = 1; i < 1024; i++) {
result = crypto.createHash('sha1').update(result).digest()
}

console.log(result.toString('hex')) // 79893503e8074330321974fa14dc44f8aa1b3df0
hantsy
2017-12-20 11:53:12 +08:00
不同语言加密结果不一样的可能性不大。

对 Spring Stack, Spring Security 4 开始使用新的 PasswordEncoder,早不需要 Salt 了,我早不关心 Salt 了。一直其使用推荐的 BCrypt,即使密码相同,加密结果也不一样,不用担心密码碰撞问题 。
Spring Secuirty 5 也加强更为现代的 PasswordEncoder 功能, BCrypt 是默认的(如果启用的话)。
hantsy
2017-12-20 12:11:38 +08:00
不过我对密码加密之类没什么太多的研究,有这方面经验的人,不妨分享一下一些基本的知识:

1. crypt
2. salt
3. hash
等等
dennisge
2017-12-20 12:43:20 +08:00
@hantsy 是的,这方便深究还挺多要点的
dennisge
2017-12-20 12:44:37 +08:00
@pusadao 赞,后来也是这样的。关键对于 node 的 digest,以及后面的多次加密没理解透。
dennisge
2017-12-20 12:45:14 +08:00
@x7395759 对的~
metrxqin
2017-12-20 15:46:13 +08:00
`高手` **如云**!
edsgerlin
2017-12-22 10:12:52 +08:00
密码加密乖乖用 PBKDF2, BCrypt, Argon2 这些专业的 KDF,别自己瞎搞。

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

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

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

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

© 2021 V2EX