spring-security - Bcrypt/Spring Security 对表情符号和汉字的支持
问题描述
我目前正在尝试对 bcrypt/spring 安全实现 (UTF-8/$2b$) 进行修复
我的问题特定于非拉丁语、非数字密码散列
在所有情况下,我都将密码设置为管理员,在 Windows 机器上,使用拉丁语言虚拟键盘,然后尝试使用我刚刚设置为管理员的密码以目标用户身份登录:
a.) 混合字母数字密码,以包含表情符号、空格和汉字的字母数字字符开头。
b.) 仅限同一类型的多个表情符号
c.) 一个表情符号
d.) 以包含表情符号、空格和汉字的表情符号开头的混合字母数字密码。
e.) 纯非拉丁语、非数字密码(汉字)
除 a 以外的所有情况都可以由管理员设置(我怀疑管理员权限会忽略对密码的所有检查),但不能用于非管理员目标用户登录
据我所见,散列是正确形成的,具有适当的 bCrypt 结构。
当光标沿行移动时,密码屏蔽将跳过字符。它将对第一个表情符号(由**表示)进行分组,但只会遍历*而不是**。这有效地导致每 2 次光标移动遍历 1.5 个表情符号。
最初我认为这是字符集的问题,或者 bCrypt 的版本或编码标准可能在解码时覆盖定义的编码(UTF-8)。您是否需要明确定义解码标准和编码标准?是否存在即使它们被定义(在任一方向)编码标准被覆盖的情况?
可能是我看错了,但我对 spring-security 平台的了解有限,而且我所看到的实现几乎是开箱即用的。
TLDR:如何使用 Spring Security 在密码中获得表情符号和非拉丁语言支持?
解决方案
推荐阅读
- database - 天蓝色数据仓库中的死锁错误
- python - tensorflow-gpu 1.8.0 ImportError:libcudnn.so.7:无法打开共享对象文件:没有这样的文件或目录
- python-3.x - setuptools,在本地系统上使用包而不是从 PyPI 获取它
- jenkins - 詹金斯与 msbuild
- python - Python根据字典值降序的第一个元素打印字典
- sql - 相当于 hive collect_set 函数的 oracle
- kubernetes - 我应该如何使用 gRPC 将 RPC 发送到 Kubernetes 容器?
- c# - c# select查询中发生oledb异常数据类型不匹配
- multidimensional-array - 如何在 Perl 6 中对形状数组进行切片?
- apache-spark - 如何在 GraphX 的聚合消息中使用组合器