Trên bất kỳ bản phân phối Red Hat nào như Fedora, CentOS hoặc RHEL, lệnh mkpasswd
không bao gồm cùng một bộ chuyển đổi như phiên bản thường có trong Debian / Ubuntu.
LƯU Ý: Lệnh mkpasswd
thực sự là một phần của expect
gói và có lẽ nên tránh. Bạn có thể tìm ra gói nào thuộc về một trong hai lệnh này.
$ yum whatprovides "*/mkpasswd"
-or-
$ repoquery -q --file */mkpasswd
Thí dụ
$ repoquery -q --file */mkpasswd
expect-0:5.43.0-8.el5.x86_64
expect-0:5.43.0-8.el5.i386
Cả hai phương pháp này đều vượt trội so với việc sử dụng rpm
vì các gói không phải cài đặt để định vị */mkpasswd
.
Cách giải quyết
Để giải quyết vấn đề này, bạn có thể sử dụng các lớp lót Python hoặc Perl sau đây để tạo mật khẩu SHA-512. Hãy lưu ý rằng đây là những món mặn:
Con trăn (> = 3,3)
$ python -c 'import crypt,getpass; print(crypt.crypt(getpass.getpass(), crypt.mksalt(crypt.METHOD_SHA512)))'
-hoặc kịch bản-
$ python -c 'import crypt; print(crypt.crypt("somesecret", crypt.mksalt(crypt.METHOD_SHA512)))'
Python (2.x hoặc 3.x)
$ python -c "import crypt, getpass, pwd; \
print(crypt.crypt('password', '\$6\$saltsalt\$'))"
$6$saltsalt$qFmFH.bQmmtXzyBY0s9v7Oicd2z4XSIecDzlB5KiA2/jctKu9YterLp8wwnSq.qc.eoxqOmSuNp2xS0ktL3nh/
Lưu ý: $ 6 $ chỉ định sha512. Hỗ trợ cho phương pháp xác định thuật toán này phụ thuộc vào hỗ trợ trong chức năng thư viện mã hóa cấp độ hệ điều hành (3) (thường là trong libcrypt). Nó không phụ thuộc vào phiên bản python.
Perl
$ perl -e 'print crypt("password","\$6\$saltsalt\$") . "\n"'
$6$saltsalt$qFmFH.bQmmtXzyBY0s9v7Oicd2z4XSIecDzlB5KiA2/jctKu9YterLp8wwnSq.qc.eoxqOmSuNp2xS0ktL3nh/
Trong các ví dụ này, mật khẩu là chuỗi "mật khẩu" và muối là "saltsalt". Cả hai ví dụ đều sử dụng $ 6 $ biểu thị rằng bạn muốn tiền điện tử sử dụng SHA-512.
sha1sum
sao?