在 spring security 中密码存储格式为{id}xxxxxxxxx ,想问下这是哪个规范里规定的呢,还是说是 spring 自己规定的,我记得我之前好像在哪见过,现在想不起来了,最近写一个文档需要参考下这个
1
munan56 2023-08-28 17:35:03 +08:00
同样加密方式生成的密文格式是差不多的。
|
2
anonydmer 2023-08-28 18:10:01 +08:00
听起来像 BCrypt ,楼主可以去搜索一下,现在流行的密码加密方案
|
3
Jirajine 2023-08-28 19:03:49 +08:00 via Android
密码不需要存储,无论明文密文。
密码只需要 hash ,楼上提到的 Bcrypt 也不是加密方案,而是一种 hash 算法。 |
4
thunderw 2023-08-28 19:58:48 +08:00
似乎并不是一个确定的规范,$参数$盐$hash 值
参阅: https://zhuanlan.zhihu.com/p/612120129 |
5
alvinbone88 2023-08-28 20:30:32 +08:00 1
|
6
Tiller 2023-08-28 21:03:23 +08:00 1
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 。 |
7
litchinn OP 可能我的问题描述哪里出了问题,导致前几楼没有理解我的意图。
目前看来这个{算法 id}部分应该是 spring 定义的,而后面的值则由 5 楼 @alvinbone88 链接中的 Modular Crypt Format (简称 MCF )定义 例如: {bcrypt}$2a$10$t6Ywtsp2zdNZ64M1P5P.seOmLwFl6TYzR3o0MnUJ9VxOxM1NKeI3S {bcrypt}如 6 楼所示,spring 据此找到对应算法的 PasswordEncoder $2a: 指代 bcrypt $10 轮次,迭代 2^10 次 顺便说一下我的需求吧,现在系统需要接收其他系统传过来的用户信息包括密码,因此在写文档时想要表述清楚这个密码字段要怎么传递,为什么要是这么个格式 |