কমান্ড লাইনে কীভাবে SHA512 পাসওয়ার্ড হ্যাশ তৈরি করবেন


83

লিনাক্সে আমি একটি SHA1 পাসওয়ার্ড হ্যাশ ব্যবহার করে তৈরি করতে পারি sha1pass mypassword। অনুরূপ কমান্ড লাইন সরঞ্জাম আছে যা আমাকে sha512হ্যাশগুলি তৈরি করতে দেয় ? জন্য একই প্রশ্ন Bcryptএবং PBKDF2


মানে না sha1sum?

1
@ টিচোড্রোমা নো, আসলে একটি sha1passকমান্ড রয়েছে, দেবিয়ান -এ সিসলিনাক্স-সাধারণ প্যাকেজের অংশ।
ডারোবার্ট

2
এখানে একটি sha512sumকমান্ড রয়েছে যা কোরিউটিলের অংশ, এবং একইভাবে openssl sha512- তবে অতিরিক্ত স্টাফও তা করে sha1passনা।
কিথ থম্পসন

উত্তর:


55

হ্যাঁ, আপনি সন্ধান করছেন mkpasswd, যা (অন্তত দেবিয়ান) whoisপ্যাকেজের অংশ of জিজ্ঞাসা করবেন না কেন ...

anthony@Zia:~$ mkpasswd -m help
Available methods:
des     standard 56 bit DES-based crypt(3)
md5     MD5
sha-256 SHA-256
sha-512 SHA-512

দুর্ভাগ্যক্রমে, আমার সংস্করণটি কমপক্ষে bcrypt করে না। যদি আপনার সি লাইব্রেরিটি করে, এটি হওয়া উচিত (এবং মানচিত্রটি শক্তি সেট করার জন্য একটি -আর বিকল্প দেয়)। -আর শ -512 এও কাজ করে, তবে আমি নিশ্চিত নই যে এটির পিবিকেডিএফ -2 রয়েছে কি না।

আপনার যদি bcrypt পাসওয়ার্ড তৈরি করতে হয় তবে Crypt::Eksblowfish::Bcryptপার্ল মডিউলটি দিয়ে আপনি এটি মোটামুটিভাবে করতে পারেন ।


70

ফেডোরা, সেন্টোস, বা আরএইচইএল এর মতো রেড হ্যাট ডিস্ট্রোজের যে কোনওটিতে কমান্ডটিতে mkpasswdএকইভাবে সুইচগুলির সমষ্টি অন্তর্ভুক্ত করা হয় না যা সাধারণত ডিবিয়ান / উবুন্টু সহ সংস্করণ অন্তর্ভুক্ত থাকে।

দ্রষ্টব্য: কমান্ডটি mkpasswdআসলে expectপ্যাকেজের অংশ এবং সম্ভবত এড়ানো উচিত। এই কমান্ডগুলির যে কোনওটির সাথে এটি কোন প্যাকেজের সাথে সম্পর্কিত তা খুঁজে পেতে পারেন।

$ yum whatprovides "*/mkpasswd"
-or-
$ repoquery -q --file */mkpasswd

উদাহরণ

$ repoquery -q --file */mkpasswd
expect-0:5.43.0-8.el5.x86_64
expect-0:5.43.0-8.el5.i386

rpmপ্যাকেজগুলি সনাক্ত করার জন্য ইনস্টল করতে হবে না কারণ এই উভয় পদ্ধতিই ব্যবহারের চেয়ে উচ্চতর */mkpasswd

সমাধান নীচে উপস্থিত

এটিকে ঘিরে কাজ করার জন্য আপনি SHA-512 পাসওয়ার্ড তৈরি করতে নিম্নলিখিত পাইথন বা পার্ল ওয়ান-লাইনার ব্যবহার করতে পারেন। এগুলি নোনতা দেওয়া হয়েছে তা খেয়াল করুন:

পাইথন (> = 3.3)

$ python -c 'import crypt,getpass; print(crypt.crypt(getpass.getpass(), crypt.mksalt(crypt.METHOD_SHA512)))'

- অথবা স্ক্রিপ্টেড-

$ python -c 'import crypt; print(crypt.crypt("somesecret", crypt.mksalt(crypt.METHOD_SHA512)))'

পাইথন (2.x বা 3.x)

$ python -c "import crypt, getpass, pwd; \
             print(crypt.crypt('password', '\$6\$saltsalt\$'))"

$6$saltsalt$qFmFH.bQmmtXzyBY0s9v7Oicd2z4XSIecDzlB5KiA2/jctKu9YterLp8wwnSq.qc.eoxqOmSuNp2xS0ktL3nh/

দ্রষ্টব্য: 5 6 sha sha512 মনোনীত করে। অ্যালগরিদম নির্দিষ্ট করার এই পদ্ধতির জন্য সমর্থন ওএস স্তরের ক্রিপ্ট (3) লাইব্রেরি ফাংশন (সাধারণত লিবক্রিপটে) এর উপর নির্ভর করে। এটি পাইথন সংস্করণের উপর নির্ভর করে না।

পার্ল

$ perl -e 'print crypt("password","\$6\$saltsalt\$") . "\n"'
$6$saltsalt$qFmFH.bQmmtXzyBY0s9v7Oicd2z4XSIecDzlB5KiA2/jctKu9YterLp8wwnSq.qc.eoxqOmSuNp2xS0ktL3nh/

এই উদাহরণগুলিতে পাসওয়ার্ডটি স্ট্রিং "পাসওয়ার্ড" এবং লবণের নাম "লবণ"। উভয় উদাহরণই $ 6 using ব্যবহার করছে যা এটি বোঝায় যে আপনি SHA-512 ব্যবহার করতে ক্রিপ্টটি চান।


2
পাইথন ওয়ান-লাইনারের জন্য, আপনি crypt.mksalt(crypt.METHOD_SHA512)স্থির কোনওটি ব্যবহার না করে লবণ উত্পন্ন করতে ব্যবহার করতে পারেন ।
জেক কোব

2
@ জ্যাককোব crypt.mksaltকেবল পাইথন 3.x এ উপলব্ধ
রিকার্ডো

2
কমান্ড লাইনে একটি ক্লিয়ার-টেক্সট পাসওয়ার্ড টাইপ করার আগে নিশ্চিত করুন যে আপনি HISISCONTROL এ "উপেক্ষা স্পেস" সেট করেছেন (যেমন, এটি প্রথমে সেন্টোস / আরএইচইএল এ করুন: ইকো 'এক্সপোর্ট HISTCONTROL = "উপেক্ষা করা হবে: উপেক্ষা করুন" "> /etc/profile.d /histcontrol.sh && উত্স /etc/profile.d/histcontrol.sh)। অন্যথায়, এটি আপনার ~ / .Bash_History এ সংরক্ষণ হবে।
প্যাট্রিক

3
পার্ল (এবং সম্ভবত অজগর) সিস্টেম ফাংশন "ক্রিপ্ট" ব্যবহার করে। সুতরাং তারা পোর্টেবল নয়, তাদের একটি ক্রিপ্ট ফাংশন প্রয়োজন যা অনুরোধ করা হ্যাশ প্রকারটি বোঝে। ওএসএক্স ক্রিপ্টটি দেয় না - এটি আমাকে কেবল পুরানো স্টাইলের ডিইএস-এনক্রিপ্টযুক্ত স্ট্রিংটি দেয়।
ড্যান প্রীটস

1
@RiccardoMurri আমি পাইথন 2.7.5 আছে এবং এক্সেস আছে crypt.mksaltসেন্টওএস 7.1 উপর
user12345

15

আপনি প্যাকেজের doveadmঅন্তর্ভুক্ত ইউটিলিটিটি ব্যবহার করতে পারেন dovecot

doveadm pw -s SHA512-CRYPT

ফলাফল উদাহরণ:

{SHA512-CRYPT}$6$0JvQ1LLFESzA16.I$JVdKAIq0igudTq06BMqzT9rL1gRawMPwLr9U3/kBMKUqZdONfa0wubC89C35LKl3aE16CRH57BfGb4ygPLggL1

স্রেফ {SHA512-CRYPT cut কেটে নিন এবং আপনার SHA512 হ্যাশ স্ট্রিংটি পাবেন।


নিয়মিত ব্যবহারকারী হিসাবে আমার পক্ষে কাজ করে না:doveadm(jotik): Fatal: Error reading configuration: stat(/etc/dovecot/dovecot.conf) failed: Permission denied (euid=1000(jotik) egid=100(users) missing +x perm: /etc/dovecot, we're not in group 97(dovecot), dir owned by 0:97 mode=0750)
জোটিক

12

এই আদেশটি চালান:

$ /sbin/grub-crypt --sha-512

তারপরে আপনি হ্যাশ করতে চান এমন শব্দটি প্রবেশ করান।


-বাশ: / এসবিন / গ্রাব-ক্রিপ্ট: এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই
শেপার্ড

আমি বিশ্বাস করি না যে গ্রাব সি 7 এ রয়েছে তাই আপনি ব্যবহার করতে পারেন: পাইথন-সি 'ইম্পোর্ট ক্রিপ্ট, গেটপাস; মুদ্রণ (crypt.crypt (getpass.getpass (), crypt.mksalt (crypt.METHOD_SHA512))) '
ucemike

3

উপরে @ স্ল্যামের কাজের ক্ষেত্রগুলি প্রসারিত করার জন্য, আপনি যদি কেউ আপনার বাশ ইতিহাস ধরে ফেলেন এবং সরল পাঠ্য পাসওয়ার্ড দেখে চিন্তিত হন, আপনি raw_input()অজগর বিবৃতিতে সল্ট করতে পারেন যেখানে লবণ এবং পাসওয়ার্ড ক্ষেত্রগুলি যায় তাই এটি আপনাকে অনুরোধ জানায়। আপনি টাইপ করার সময় পাঠ্যটি মুখোশযুক্ত নয়, তবে এটি আপনার বাশ ইতিহাসে প্রদর্শিত হবে না। আপনি একটি শীর্ষস্থানীয় স্থান দিয়ে কমান্ডটি শুরু করতে পারেন, তবে আমি এটি করতে সর্বদা ভুলে যাই।

python -c "import crypt, getpass, pwd; print crypt.crypt(raw_input(), '\$6\$' + raw_input() + '\$')"

2
আপনি আপনার ফাইলটিতে bashএকটি স্থান যুক্ত করে পূর্ববর্তী কমান্ডগুলি রেকর্ড না করার জন্যও কনফিগার করতে পারেন । আপনি যখন কোনও কমান্ড চালান আপনি নিজের ইতিহাস থেকে বাদ দিতে চান কেবল একটি স্থান টাইপ করুন তারপরে আসল কমান্ড। HISTCONTROL=ignorespace.bashrc
theillien

1

sha512 htpasswd

কমান্ড যা ব্যবহারকারীর এবং পাসওয়ার্ডের জন্য জিজ্ঞাসা করে এবং একটি নিয়মিত htpasswd-file উত্পন্ন করে:

python -c 'import crypt,getpass; print(getpass.getpass("Name: ")+":"+crypt.crypt(getpass.getpass(),crypt.mksalt(crypt.METHOD_SHA512)))' >> htpasswd

সমস্ত অজগর সংস্করণ> 2.5 নিয়ে কাজ করে।



0

যদি আপনি সিমের উত্তর থেকে পাইথন (> = 2.7) পদ্ধতি ব্যবহার করেন এবং এটি তৈরির আগে আপনার পাসওয়ার্ডটি নিশ্চিত করতে চান - কারণ আপনি আঙুলের পাসওয়ার্ডগুলি মোটা ...

$ python -c 'import crypt,getpass;pw=getpass.getpass(); print(crypt.crypt(pw), crypt.mksalt(crypt.METHOD_SHA512) if (pw==getpass.getpass("Confirm: ")) else exit())'

এই উত্তরের নভেম্বর 29, 2017 সংস্করণে, এটি বলে যে এটি অজগর ২.7 (বা তারপরের) জন্য কাজ করে। পাইথন 2.7 এর ক্রিপ্ট মডিউলটিতে ম্যাক্সাল্ট () নেই। এছাড়াও আমি মনে করি আপনি crypt.mksalt () কে দ্বিতীয় আর্গ হিসাবে কল করতে চান crypt.crypt () (ভুল জায়গায় প্রতিবিম্বিত বন্ধন?)।
জুয়ান

0

লিনাক্সে ওপেনএসএল সংস্করণ "ওপেনএসএসএল ১.১.১" এবং ম্যাকোস সমর্থন এমডি 5_ক্রিপটে ওপেনসেল সংস্করণ "লিব্রেএসএসএল 2.6.5"।

কেবল চালান এবং পাসওয়ার্ড লিখুন:

openssl passwd -crypt
Password:
Verifying - Password:
<results_into_a_md5_crypt_password>

অথবা সরাসরি সিএলআই-তে সরল পাঠ্য পাসওয়ার্ড সরবরাহ করুন:

openssl password -crypt <plain_text_password_goes_here>
<results_into_a_md5_crypt_password>

-12

আপনি ব্যবহার করতে পারেন sha512sum:

echo "password" | sha512sum

24
এই উত্তরটি ভুল। কমান্ডটি একটি বৈধ SHA-512 পাসওয়ার্ড হ্যাশ উত্পন্ন করবে না । এটি স্ট্রিং পাসওয়ার্ডের চেকসামটি সহজেই গণনা করবে note n (নোট করুন যে শেষ পর্যন্ত একটি নতুন লাইনও রয়েছে)। ইউনিক্স পাসওয়ার্ড হ্যাশগুলি সল্ট করা হয় এবং দুটি "$" চিহ্নের মধ্যে একটি হ্যাশ সংস্করণ কোড অন্তর্ভুক্ত করা হয়। উত্তরটি @ এসএমএল দ্বারা দেখুন।
zorlem

আরও সুনির্দিষ্টভাবে, সমস্যাটি হ'ল পাসওয়ার্ডটি কিছুটা অবলুপ্ত থাকলেও এই পদ্ধতিটি একটি এন.ইউইকিপিডিয়া.আর / উইকি / রেনবো_সামগ্রী আক্রমণে ঝুঁকিপূর্ণ ।
হতাশাডানিয়েল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.