如何知道已使用哪种算法加密表中的现有密码

Posted

技术标签:

【中文标题】如何知道已使用哪种算法加密表中的现有密码【英文标题】:How to know which algorithm has been used to encrypt existing passwords in a table 【发布时间】:2021-12-06 02:25:48 【问题描述】:

在这里,我想手动将记录添加到 mysql users 表中。有一个名为encrypted_password 的字段,但我不知道已使用的加密算法。当我尝试手动添加记录但在我进行身份验证时它不起作用。

现有用户记录密码哈希示例:

encrypted_password: $2a$12$ibqhezRBPsy022fhMqGXBOtT749jR4QMwBULS4o1x9NMycPbftPwa

我尝试为新记录插入的查询。

INSERT INTO users(status,classification,encrypted_password,created_at,updated_at) values(1,1,MD5('test1234$'), NOW(), NOW());

我插入的记录的哈希格式:

encrypted_password: b46cfe70ccedca93ed4f06f5e5901fea

我该如何解决这个问题并以正确的哈希格式添加加密密码?

【问题讨论】:

这是 bcrypt 加密。加密方法和盐已经在密码中:$2a$,费用为12。 en.wikipedia.org/wiki/Bcrypt 在后端加密密码,而不是在数据库中。这回答了你的问题了吗? How to use `bcrypt` algorithm within `encrypt` function in MySQL for verifying password? 这不是password-encryption,也不应该是。它是密码散列。有关详细信息,请参阅标签说明。 【参考方案1】:

简单地说,我们可以按照以下步骤操作。

    使用在线哈希分析器识别密码哈希算法。 基于该散列算法,使用在线散列生成器生成新散列。 使用该哈希更新表记录条目。 现在使用已用于哈希生成的纯文本登录应该成功。

【讨论】:

请不要发布仅包含指向其他外部资源的链接的答案

以上是关于如何知道已使用哪种算法加密表中的现有密码的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 aes 算法加密 sqlite 文件?

我可以使用哪种加密算法向/从网络服务器发送/接收数据?

哪种 BouncyCastle API 支持的加密算法对于 C# .NET 中的短字符串加密最快且非常安全?

压缩文件密码怎么解

Liunx系统配置及服务器管理-用户管理命令

银行在其密码生成器令牌上使用哪种 OTP(一次性密码)算法? [关闭]