V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
litchinn
V2EX  ›  Java

一个密码存储格式的问题

  •  
  •   litchinn · 243 天前 · 1490 次点击
    这是一个创建于 243 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    7 条回复    2023-08-29 09:00:17 +08:00
    munan56
        1
    munan56  
       243 天前
    同样加密方式生成的密文格式是差不多的。
    anonydmer
        2
    anonydmer  
       242 天前
    听起来像 BCrypt ,楼主可以去搜索一下,现在流行的密码加密方案
    Jirajine
        3
    Jirajine  
       242 天前 via Android
    密码不需要存储,无论明文密文。
    密码只需要 hash ,楼上提到的 Bcrypt 也不是加密方案,而是一种 hash 算法。
    thunderw
        4
    thunderw  
       242 天前
    似乎并不是一个确定的规范,$参数$盐$hash 值
    参阅: https://zhuanlan.zhihu.com/p/612120129
    Tiller
        6
    Tiller  
       242 天前   ❤️ 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 。
    litchinn
        7
    litchinn  
    OP
       242 天前
    可能我的问题描述哪里出了问题,导致前几楼没有理解我的意图。

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

    顺便说一下我的需求吧,现在系统需要接收其他系统传过来的用户信息包括密码,因此在写文档时想要表述清楚这个密码字段要怎么传递,为什么要是这么个格式
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2826 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 09:58 · PVG 17:58 · LAX 02:58 · JFK 05:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.