सवाल छाया के लिए SHA-512 हैश पासवर्ड कैसे बनाया जाए?


पिछले एसएफ प्रश्नों को मैंने देखा है जो एमडी 5 हैश पासवर्ड का उत्पादन करते हैं।

क्या किसी के पास SHA-512 हैश पासवर्ड बनाने के लिए कोई सुझाव है? मैं एक स्क्रिप्ट के बजाय एक लाइनर पसंद करूंगा, लेकिन अगर एक स्क्रिप्ट एकमात्र समाधान है, तो यह भी ठीक है।

अद्यतन करें

इस के साथ पिछले py2 संस्करणों को बदलना:

python3 -c "import crypt;print(crypt.crypt(input('clear-text pw: '), crypt.mksalt(crypt.METHOD_SHA512)))"

56
2017-11-11 11:14


मूल


एसएचए और एमडी 5 हैं नहीं एन्क्रिप्शन। वे हैशिंग एल्गोरिदम हैं। महत्वपूर्ण अंतर यह है कि हैश डेटा पुनर्प्राप्त करने योग्य नहीं है। तुम्हें क्या करने की ज़रूरत है? - SmallClanger
धन्यवाद। सवाल संशोधित किया। man 5 shadow इसे "एन्क्रिप्टेड पासवर्ड" के रूप में संदर्भित करता है, इसलिए मैं उस शब्द के साथ चला गया। - Belmin Fernandez
क्षमा करें अगर वह थोड़ा सा snarky था। क्या आप मैन्युअल रूप से छाया-संगत पासवर्ड हैश उत्पन्न करने की कोशिश कर रहे हैं? यदि हां, तो अपना नज़र डालें /etc/shadow सामग्री। तुम देखोगे $x$salt$hash। x द्वारा उपयोग किए गए एल्गोरिदम को दर्शाता है crypt, साथ में 6 आधुनिक लिनक्स पर विशिष्ट है, जो sha512 है (देखें man 3 crypt)। नीचे दिए गए उत्तरों में से कोई भी एक ही हैश का उत्पादन करेगा, जब तक आप इसे एक ही नमक दें। - SmallClanger
अरे नहीं, बिल्कुल नाराज नहीं। आपने कुछ स्पष्ट किया है जिसके बारे में मैं उलझन में था इसलिए मैं बहुत आभारी हूं महोदय! - Belmin Fernandez
धन्यवाद! पासलिब-आधारित एकमात्र ऐसा है जिसे मैं ओएस एक्स पर काम करने में सक्षम हूं। - Stig Brautaset


जवाब:


यहां एक लाइनर है:

python -c 'import crypt; print crypt.crypt("test", "$6$random_salt")'

पायथन 3.3+ में शामिल हैं mksalt क्रिप्ट में, जो इसे उपयोग करने के लिए बहुत आसान (और अधिक सुरक्षित) बनाता है:

python3 -c 'import crypt; print(crypt.crypt("test", crypt.mksalt(crypt.METHOD_SHA512)))'

यदि आप कोई तर्क नहीं देते हैं crypt.mksalt (यह स्वीकार कर सकता है crypt.METHOD_CRYPT, ...MD5, SHA256, तथा SHA512), यह सबसे मजबूत उपलब्ध का उपयोग करेगा।

हैश की आईडी (पहले के बाद संख्या $) प्रयुक्त विधि से संबंधित है:

  • 1 -> एमडी 5
  • 2 ए -> ब्लोफिश (मुख्य लाइन ग्लिब में नहीं; कुछ लिनक्स वितरण में जोड़ा गया)
  • 5 -> एसएचए -256 (ग्लिब 2.7 के बाद से)
  • 6 -> SHA-512 (glibc 2.7 के बाद से)

मैं आपको सलाह दूंगा कि आप कौन सा लवण देखते हैं और ऐसे में और छोटे-छोटे हिस्सों के अनुसार एन्क्रिप्शन और हैशिंग के बीच का अंतर टिप्पणी करते हैं।

अद्यतन 1: उत्पादित स्ट्रिंग छाया और किकस्टार्ट स्क्रिप्ट के लिए उपयुक्त है। अद्यतन 2: चेतावनी। यदि आप मैक का उपयोग कर रहे हैं, तो मैक पर पायथन में इसका उपयोग करने के बारे में टिप्पणी देखें जहां यह अपेक्षा के अनुसार काम नहीं कर रहा है।


62
2017-11-11 11:29



आयात करना getpass तथा pwd मॉड्यूल आवश्यक नहीं है। - akaihola
बदलने के random_salt एक वास्तविक यादृच्छिक नमक के साथ। - Belmin Fernandez
मैं इसे योसामेट में काम करने के लिए नहीं मिल सकता। यह वही है जो यह थूकता है: $6asQOJRqB1i2 - यह सही होने के लिए काफी लंबा प्रतीत नहीं होता है! - Stig Brautaset
क्रिप्ट मॉड्यूल को आपके लिए नमक बनाने दें: python -c 'import crypt; print crypt.crypt("test", crypt.mksalt(crypt.METHOD_SHA512))' - rrauenza
@ kasperd मुझे देखा जाना चाहिए था डॉक्स; यह 3.3+ में है - Nick T


डेबियन पर आप उपयोग कर सकते हैं mkpasswd  / etc / छाया के लिए उपयुक्त विभिन्न हैशिंग एल्गोरिदम के साथ पासवर्ड बनाने के लिए। यह पैकेज जोइस में शामिल है (एपीटी-फाइल के अनुसार)

mkpasswd -m sha-512
mkpasswd -m md5

उपलब्ध हैशिंग एल्गोरिदम प्रकार की एक सूची प्राप्त करने के लिए:

mkpasswd -m help 

HTH


35
2017-07-23 09:22



यह पैकेज क्या प्रदान करता है? वहां एक mkpasswd फेडोरा के तहत कार्यक्रम (उम्मीद का हिस्सा) भी है, लेकिन यह इस उद्देश्य के लिए बेकार है। - Cristian Ciupitu
जैसा कि उन्होंने कहा, का संस्करण mkpasswd वह डेबियन / उबंटू के बारे में बात कर रहा है। mkpasswd फेडोरा पर (कम से कम 14 तक) गायब है -m स्विच। - slm
उत्सुकता से, यह हैइस पैकेज, डेबियन से विरासत है। देख dpkg -S /usr/bin/mkpasswd मैं इसे खुद पर विश्वास नहीं कर सका: डी - Rbjz
पासवर्ड जांचने के लिए, यदि पहला अंक 6 है, तो दूसरे और तीसरे डॉलर के बीच नमक के रूप में भाग का उपयोग करें। उदाहरण के लिए root:$6$AbCdE$xyz:... आपको उपयोग करना चाहिए: mkpasswd -m sha-512 -S AbCdE। सही पासवर्ड के साथ, आपको एक ही हैश मिलना चाहिए। - Luc


सबसे बढ़िया उत्तर: grub-तहखाने

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)**

24
2017-10-03 20:26



सरल समाधान .. CentOS 6 पर मेरे लिए काम किया। - Banjer
सिस्टम पर है कि grub-crypt आदेश, यह वास्तव में यह करने के लिए सबसे मूर्ख और सुविधाजनक तरीका है। जब आप इसे पेंच कर सकते हैं तो लवण के साथ मैन्युअल रूप से खेलना कोई मतलब नहीं है। समस्या यह है कि अधिक से अधिक आधुनिक प्रणालियों में GRUB2 है और इस प्रकार इस कमांड को शामिल नहीं किया जाएगा। - rsaw


विभिन्न यूनिक्स प्रकार ओएस पर SHA-512 पासवर्ड उत्पन्न करने के लिए यहां एक छोटा सी कोड है।

फ़ाइल: 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;
}

संकलन करना:

/usr/bin/gcc -lcrypt -o passwd-sha512 passwd-sha512.c

उपयोग:

passwd-sha512 <password> <salt (16 chars max)>

8
2018-02-13 10:03



यह सवाल 3 साल पुराना है ... - Grumpy
यह टिप्पणी पुरानी नहीं है। प्यारा ऐप जो आप वहां पहुंचे, वह केवल 1 उत्तर है जब यह मैन पेज उदाहरण जैसा दिखता है :) - Sampo Sarrala


पर्ल SHA-512 शेड पासवर्ड उत्पन्न करने के लिए एक-लाइनर समाधान:

perl -le 'print crypt "desiredPassword", "\$6\$customSalt\$"'

आरएचईएल 6 पर काम किया


4
2018-05-23 02:26





सेंटो / आरएचईएल मशीनों को निम्न जांच और संशोधन क्यों न करें ताकि यह सुनिश्चित किया जा सके कि शाम 512 के साथ / etc / shadow के लिए सभी पासवर्ड हैशिंग। फिर आप अपने passworkd को passwd कमांड के साथ सामान्य रूप से सेट कर सकते हैं

#Set stronger password hasing
/usr/sbin/authconfig --test | grep sha512 > /dev/null
if [ $? -ne 0 ]; then
echo "Configuring sha512 password hashing"
sudo /usr/sbin/authconfig --enableshadow --passalgo=sha512 --updateall
fi

2
2017-11-11 14:34





यहां एक-लाइनर है जो एक यादृच्छिक नमक के साथ SHA-512 हैश पासवर्ड बनाने के लिए खोल कमांड का उपयोग करता है:

[रूट @ होस्ट] mkpasswd -m sha-512 MyPAsSwOrD $ (openssl rand -base64 16 | tr -d '+ =' | head -c 16)

टिप्पणियाँ

  1. आपको "जोइस" पैकेज (डेबियन, एसयूएसई, आदि) स्थापित करने की आवश्यकता हो सकती है, जो "mkpasswd" प्रदान करता है।
  2. "/ Etc / छाया" में रेखाओं के प्रारूप पर विवरण के लिए क्रिप्ट (3) देखें।

2
2018-02-14 23:10



दुर्भाग्य से whois फेडोरा 18 से पैकेज कोई भी प्रदान नहीं करता है mkpasswd। - Cristian Ciupitu
आर्क लिनक्स में: / usr / bin / mkpasswd का अनुमान 5.45-3 है - Nowaker
फेडोरा 20 पर वही है और यह कुछ और करता है। - Cristian Ciupitu
दुर्भाग्यवश सुझाए गए आदेश में दो समस्याएं हैं: 1) आपूर्ति किया गया पासवर्ड अब आपके खोल के इतिहास में संग्रहीत है, और 'इतिहास' कमांड या इसी तरह के किसी भी व्यक्ति के लिए दृश्यमान है। 2) आपको कमांड लाइन पर यादृच्छिक नमक की आपूर्ति करने की आवश्यकता नहीं है - और मुझे लगता है कि आपको funk openssl चाल का उपयोग करने के बजाय mkpasswd इसे आपके लिए करना चाहिए। (ध्यान दें कि कम से कम उबंटू क्वांटल पर यह सच है। आप इसे 'mkpasswd -m sha-512 foo' चलाकर कई बार परीक्षण कर सकते हैं। आप नमक में परिवर्तन देखेंगे। नमक दूसरे और तीसरे $ वर्णों के बीच मूल्य है। ) - oskarpearson


इस उत्तर के सुरक्षा निहितार्थों के बारे में जानने के लिए नीचे दी गई टिप्पणी पढ़ें

रूबी मानसिकता के लिए यहां एक लाइनर है:

'password'.crypt('$6$' + rand(36 ** 8).to_s(36))

2
2018-02-17 20:42



यह गलत है: रुबी का रैंड फ़ंक्शन सुरक्षित नहीं है - यह एक पीआरएनजी का उपयोग करता है, इसलिए यह परिणाम उत्पन्न करेगा जो आपके द्वारा चलाए जाने वाले पल के समय / स्थिति के अनुमान के आधार पर रिवर्स-इंजीनियर हो सकता है। - oskarpearson


HASH algos संदेश digest उत्पादन के लिए हैं, वे पासवर्ड के लिए कभी भी उपयुक्त नहीं हैं, जो किसी भी तरह के HKDF का उपयोग करना चाहिए ( http://tools.ietf.org/rfc/rfc5869.txt ) - पीबीकेडीएफ 2 या बीसीआरपी देखें


0
2017-07-30 09:05



अच्छा बिंदु, लेकिन man crypt मुझे बताता है कि पीबीकेडीएफ 2 समर्थित नहीं है। - Huygens


#!/usr/bin/env python

import getpass

from passlib.hash import sha512_crypt

if __name__ == "__main__":
    passwd = getpass.getpass('Password to hash: ')
    hash = sha512_crypt.encrypt(passwd)

    print hash

यदि आप चाहें तो आप इसे मेरे जीथब रेपो से क्लोन कर सकते हैं: https://github.com/antoncohen/mksha


0
2018-02-14 23:23