Solusi 1:
Ini satu kalimat:
python -c 'import crypt; print crypt.crypt("test", "$6$random_salt")'
Python 3.3+ menyertakan mksalt
di crypt, yang membuatnya lebih mudah (dan lebih aman) untuk digunakan:
python3 -c 'import crypt; print(crypt.crypt("test", crypt.mksalt(crypt.METHOD_SHA512)))'
Jika Anda tidak memberikan argumen ke crypt.mksalt
(dapat menerima crypt.METHOD_CRYPT
, ...MD5
, SHA256
, dan SHA512
), itu akan menggunakan yang terkuat yang tersedia.
ID hash (angka setelah $
pertama ) terkait dengan metode yang digunakan:
- 1 -> MD5
- 2a -> Blowfish (bukan di glibc jalur utama; ditambahkan di beberapa distribusi Linux)
- 5 -> SHA-256 (sejak glibc 2.7)
- 6 -> SHA-512 (sejak glibc 2.7)
Saya sarankan Anda mencari tahu apa itu garam dan semacamnya dan sesuai komentar para penjelajah kecil tentang perbedaan antara enkripsi dan hashing.
Pembaruan 1:String yang dihasilkan cocok untuk skrip shadow dan kickstart.
Pembaruan 2:Peringatan . Jika Anda menggunakan Mac, lihat komentar tentang menggunakan ini di python di mac yang sepertinya tidak berfungsi seperti yang diharapkan.
Di macOS Anda harus tidak gunakan versi di atas, karena Python menggunakan versi sistem crypt()
yang tidak berperilaku sama dan menggunakan enkripsi DES yang tidak aman. Anda dapat menggunakan satu liner independen platform ini (memerlukan passlib – instal dengan pip3 install passlib
):
python3 -c 'import passlib.hash; print(passlib.hash.sha512_crypt.hash("test"))'
Solusi 2:
Di Debian Anda dapat menggunakan mkpasswd untuk membuat kata sandi dengan algoritme hashing berbeda yang cocok untuk /etc/shadow. Itu termasuk dalam paket whois (menurut apt-file)
mkpasswd -m sha-512
mkpasswd -m md5
untuk mendapatkan daftar algoritme hashing yang tersedia, ketik:
mkpasswd -m help
HTH
Solusi 3:
Jawaban Terbaik:grub-crypt
Usage: grub-crypt [OPTION]...
Encrypt a password.
-h, --helpPrint this message and exit
-v, --version Print the version information and exit
--md5 Use MD5 to encrypt the password
--sha-256 Use SHA-256 to encrypt the password
**--sha-512 Use SHA-512 to encrypt the password (default)**
Solusi 4:
Berikut adalah kode C singkat untuk menghasilkan kata sandi SHA-512 di berbagai OS jenis Unix.
Berkas:passwd-sha512.c
#define _XOPEN_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
if ( argc < 3 || (int) strlen(argv[2]) > 16 ) {
printf("usage: %s password salt\n", argv[0]);
printf("--salt must not larger than 16 characters\n");
return;
}
char salt[21];
sprintf(salt, "$6$%s$", argv[2]);
printf("%s\n", crypt((char*) argv[1], (char*) salt));
return;
}
untuk mengkompilasi:
/usr/bin/gcc -lcrypt -o passwd-sha512 passwd-sha512.c
penggunaan:
passwd-sha512 <password> <salt (16 chars max)>
Solusi 5:
Perl solusi satu baris untuk menghasilkan kata sandi hash SHA-512:
perl -le 'print crypt "desiredPassword", "\$6\$customSalt\$"'
Bekerja pada RHEL 6