Halo2 如何快捷更改密码
Background(背景)
腾讯云服务器 系统是 Ubuntu 24.04,搭建了 1Panel,使用 Docker搭建了一个Halo个人站,版本是 Halo2,使用的是 Mysql8.0系统
许久没有登录,忘记了密码,看了很久官方播客也没太看懂具体的解决方案,咨询了 Gemini,沟通了一会儿, 找到了一个更改密码的口令,分享给大家:
docker exec -it <MYSQL_CONTAINER_NAME> mysql \
-u <DB_USERNAME> \
-p<DB_PASSWORD> \
-D <DB_NAME> \
-e "UPDATE extensions SET data = JSON_SET(CONVERT(data USING utf8mb4), '$.spec.password', '{bcrypt}<BCRYPT_HASH>') WHERE name = '/registry/users/<HALO_USERNAME>';"
Halo2 基于 Spring Security 安全框架,默认采用 BCrypt 强哈希算法来存储用户密码。这种算法具有内置“加盐”(Salt)和可调“成本因子”(Work Factor)的特性,能够有效防御彩虹表和暴力破解攻击。
1. 存储格式要求
在 Halo2 的数据库(extensions 表)中,密码字段并不是单纯的哈希值,它必须遵循 统一身份验证前缀 格式:
格式:
{算法名称}哈希版本$成本因子$随机盐+密文示例:
{bcrypt}$2a$10$8.UnVuG9HHgffUDAlk8q2OuVGkqEnLPz0WpOkvAyqXqjnG4vve9S.
{bcrypt}: 算法标识符(必须包含,否则 Halo 无法识别加密协议)。$2a$: BCrypt 算法的版本号。$10$: 成本因子(Rounds),数值越高计算越慢,防御力越强,默认通常为 10。后续字符串: 由算法自动生成的随机盐值和加密后的二进制摘要。
1.1 加密密码生成方式
1.1.1 网站在线生成(网站文章不引入外部链接,所以请自行搜索)
1.1.2 本地生成
命令行生成
如果你的服务器安装了 Python3,可以直接运行:
pip install bcrypt
python3 -c 'import bcrypt; print("{bcrypt}" + bcrypt.hashpw(b"你的密码", bcrypt.gensalt(10)).decode())'
文章作者:Administrator
文章链接:http://localhost:8090/archives/halo2-ru-he-kuai-jie-geng-gai-mi-ma
版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议,转载请注明出处!
评论