使用 SHA1+salt 和 MD4 生成密码哈希 [已关闭]

Generate password Hash with SHA1+salt and MD4 [closed]

提问人:Kiwi 提问时间:11/11/2023 最后编辑:Kiwi 更新时间:11/17/2023 访问量:100

问:


编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将帮助其他人回答这个问题。

11天前关闭。

有人知道如何在 Linux 上使用命令行生成哈希值吗? 我必须生成一个 SHA1 + salt= Password:Cat Salt:XN10Zj2c 的 Hash 和 MD4= Password:Cat 的哈希值

感谢您的帮助!

linux 哈希 加密 密码-加密 password-hash

评论


答:

2赞 Maarten Bodewes 11/11/2023 #1

这里的问题是,没有通用的方法来散列密码和盐。您很可能需要模仿命令行工具,因为它不包含这些算法(因此我使用 -1 和 -2 作为算法标识符)。crypt

例如:

#!/bin/bash

# Your password and salt
password="your_password_here"
salt="your_salt_here"

# Specify the algorithm: -1 for MD4, -2 for SHA-1
algorithm_specifier="-2" # Change this to -1 for MD4

# Function to hash with SHA-1
hash_sha1() {
    local pass="$1"
    local salt="$2"
    echo -n "$pass$salt" | openssl dgst -sha1
}

# Function to hash with MD4
hash_md4() {
    local pass="$1"
    local salt="$2"
    echo -n "$pass$salt" | openssl dgst -md4
}

# Check for the specified hashing algorithm
if [ "$algorithm_specifier" == "-2" ]; then
    # SHA-1 hashing
    sha1_hash=$(hash_sha1 "$password" "$salt")
    echo "$algorithm_specifier$$salt$$sha1_hash"
elif [ "$algorithm_specifier" == "-1" ]; then
    # MD4 hashing
    md4_hash=$(hash_md4 "$password" "$salt")
    echo "$algorithm_specifier$$salt$$md4_hash"
else
    echo "Invalid algorithm specifier."
fi

请注意,符号用于分隔“格式”中输出的不同部分。但是,它们不是实际散列的一部分。此外,通常对密码进行哈希处理,然后是盐,而不是相反。$cryptcrypt


但是,请注意,您既不应使用这些旧的、损坏的哈希值,不应使用较新的哈希值,例如 SHA-2 或 SHA-3。这样做的原因是,您应该使用具有高迭代计数或工作因子的 PBKDF,例如 PBKDF2 或 Argon2,最好是 16 字节的随机盐。这些函数有时也称为“密码哈希”,这是有充分理由的;它们提供了针对暴力破解和字典攻击的额外保护。