一个密码存储格式的问题

2023-08-28 17:22:16 +08:00
 litchinn

在 spring security 中密码存储格式为{id}xxxxxxxxx ,想问下这是哪个规范里规定的呢,还是说是 spring 自己规定的,我记得我之前好像在哪见过,现在想不起来了,最近写一个文档需要参考下这个

1751 次点击
所在节点    Java
7 条回复
munan56
2023-08-28 17:35:03 +08:00
同样加密方式生成的密文格式是差不多的。
anonydmer
2023-08-28 18:10:01 +08:00
听起来像 BCrypt ,楼主可以去搜索一下,现在流行的密码加密方案
Jirajine
2023-08-28 19:03:49 +08:00
密码不需要存储,无论明文密文。
密码只需要 hash ,楼上提到的 Bcrypt 也不是加密方案,而是一种 hash 算法。
thunderw
2023-08-28 19:58:48 +08:00
似乎并不是一个确定的规范,$参数$盐$hash 值
参阅: https://zhuanlan.zhihu.com/p/612120129
alvinbone88
2023-08-28 20:30:32 +08:00
Tiller
2023-08-28 21:03:23 +08:00
https://springdoc.cn/spring-security/features/authentication/password-storage.html#authentication-password-storage-bcrypt

密码存储格式
密码的一般格式是:

DelegatingPasswordEncoder Storage Format
{id}encodedPassword

id 是一个标识符,用于查询应该使用哪个 PasswordEncoder ,encodedPassword 是所选 PasswordEncoder 的原始编码密码。id 必须在密码的开头,以 { 开始,以 } 结束。如果找不到 id ,id 将被设置为 null 。例如,下面可能是一个使用不同 id 值编码的密码列表。所有的原始密码都是 password 。
litchinn
2023-08-29 09:00:17 +08:00
可能我的问题描述哪里出了问题,导致前几楼没有理解我的意图。

目前看来这个{算法 id}部分应该是 spring 定义的,而后面的值则由 5 楼 @alvinbone88 链接中的 Modular Crypt Format (简称 MCF )定义
例如:
{bcrypt}$2a$10$t6Ywtsp2zdNZ64M1P5P.seOmLwFl6TYzR3o0MnUJ9VxOxM1NKeI3S
{bcrypt}如 6 楼所示,spring 据此找到对应算法的 PasswordEncoder
$2a: 指代 bcrypt
$10 轮次,迭代 2^10 次

顺便说一下我的需求吧,现在系统需要接收其他系统传过来的用户信息包括密码,因此在写文档时想要表述清楚这个密码字段要怎么传递,为什么要是这么个格式

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

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

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

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

© 2021 V2EX