سؤال كيفية الحصول على تجزئة MD5 من سلسلة مباشرة في المحطة؟


كيف يمكنني الحصول على MD5 التجزئة من سلسلة مباشرة من المحطة؟

على سبيل المثال ، أريد السلسلة abcdefg تجزئته. حاليا MD5SUM يقبل الأمر فقط اسم الملف كمدخل. أريد ببساطة أن أدخل السطر التالي وأن يتم إنجاز كل شيء.

md5sum abcdefg
output: ac54bcf346e578feb46888b3ecd2344f

كيف يمكنني تحقيق ذلك؟


151
2017-07-20 11:08


الأصل


md5 -s abcdefg - raitisd


الأجوبة:


يمكنك أيضًا قول شيء مثل هذا:

~$ echo -n Welcome | md5sum
83218ac34c1834c26781fe4bde918ee4  -

في الأساس يفعل نفس الشيء كما هو موضح من قبلenzotib ، ولكن ربما يكون أبسط قليلاً.


200
2017-07-20 11:47



أنت أيضا تريد تحديث نتيجة المثال ، كما 7803ffca ... هي النتيجة مع السطر الجديد. النتيجة الصحيحة للقيادة أعلاه هي 83218ac34c1834c26781fe4bde918ee4 - - Xanthir
لماذا توجد مساحات واندفاع في النهاية؟ - keune
يرجى تصحيح لي إذا كنت مخطئا ، ولكن أعتقد أن هذا هو بسبب تطبيق MD5sum على تدفق البيانات ، بدلا من قراءة محتوى الملف ، الذي يرتبط به اسم. - jfmessier
لاحظ أن -n إلزامي. بدون ذلك ، سيكون التجزئة الخاص بك خاطئة تماماً لأنه يتضمن حرف السطر الجديد. - Pithikos
هذا ساعدني على نظام macOS أيضًا ، على الرغم من اختلافه قليلاً: echo -n Welcome | md5 - Edward J. Stembler


بسيط جدا ، فإنه يقبل stdin ، لذلك

md5sum <<<"my string"

لتجنب إضافة السطر الجديد الزائدة بواسطة shell:

printf '%s' "my string" | md5sum

59
2017-07-20 11:10



إعطاء كل منmessier وenzotib تصويتًا ؛ يقع كلاهما في فئة "البساطة الأنيقة". سأكون عرضة لاستخدام <<<" أنبوب في برنامج نصي ؛ echo string يفوز ل commandline. أحسنت. - Tom
+1 للاستخدام printfبشكل صحيح. إذا كنت ترغب في الحصول على المبلغ دون -، ضع | cut -d ' ' -f 1. استخدام المثال: sum=$(printf '%s' 'some string' | md5sum | cut -d ' ' -f 1) - Lekensteyn
انه غريب ولكن <<< المشغل و printf وظيفة تعطي نتائج مختلفة تماما عن تجزئة MD5! نتيجة printf صحيحة رغم! - Hamed Momeni
يبدو باستخدام <<< عامل يرسل خط جديد إلى md5sum! - Hamed Momeni
نعم ، كما قلت بين المثال الأول والثاني - enzotib


$ echo -n 123456 | md5sum | awk '{print $1}'
e10adc3949ba59abbe56e057f20f883e

يمكنك إنشاء برنامج نصي shell.

على سبيل المثال ، اسم البرنامج النصي هو md5.sh:

#!/bin/bash

echo   -n   $1 | md5sum | awk '{print $1}'

إذن تنفيذ:

 chmod +x md5.sh

ثم:

$ md5.sh 123456
e10adc3949ba59abbe56e057f20f883e

إذا كان النظام الخاص بك هو macOS. تحتاج إلى تعديل هذا البرنامج النصي:

$ echo -n 123456 | md5 | awk '{print $1}' 
e10adc3949ba59abbe56e057f20f883e

21
2018-03-09 04:54



هذا طويل جدا - Gucho Ca
بديل عن awk: cut -d ' ' -f 1 - Blauhirn


سيؤدي تشغيل md5sum بدون أي وسيطات على الإطلاق إلى قراءة الإدخال من الجهاز. اكتب أو الصق ما تشاء ، وعندما تنتهي ، اضغط ctrl-d لإنهاء المدخلات.


9
2017-07-27 15:46



نعم ، أنت على حق أيضًا. لكن ctrl+d يحتاج إلى الضغط مرتين من أجل العمل. - Hamed Momeni
James ، إذا لم يتبع خطًا جديدًا ، نعم. إذا ضربته بعد دخوله ، فإنه يحتاج مرة واحدة فقط. عندما لا يتبع خطًا جديدًا ، فإنه يفرض فقط على جميع الأحرف المكتوبة على السطر حتى الآن معالجتها على الفور بدلاً من انتظار سطر جديد. - psusi


openssl md5 filename
openssl sha1 filename

بالنسبة لأنبوب السلسلة ، يستخدم المحتوى الصدى

echo -n 123456 | openssl md5

8
2017-12-10 11:13





بلدي كزة سريعة في --help إلى عن على md5sum يوضح أن الأمر:

md5sum -

ثم يعطي موجه لمدخلات بسيطة. إدخال بعض النص ثم استخدام أدخل وثم السيطرة+د للدلالة نهاية الملف ثم الأسباب md5sum بصق MD5 للنص الخام الذي أدخلته (بما في ذلك ذلك أدخل، انها CR ، IIRC).

أقل لكتابة وليس الأنابيب! وتجنب كلمة مرور نص عادي يتم تسجيلها في تاريخ قذيفة! وو!

إذا كنت لا تريد ذلك CR الملاحق (والذي هو الحال عادة إذا كنت تريد تجزئة كلمة مرور) ، لا تضغط أدخل قبل السيطرة+د، أدخل السيطرة+د مرتين بدلا من ذلك.


3
2017-08-21 06:00





وجدت في نصوصي أن هناك شيئين يجب أن تعرفهما عن هذه المشكلة.

  • لا يهم إذا كنت تفعل echo "$myvariable" أو echo -n "$myvariable" ولكن يجب دائمًا استخدام doubleqoutes للسلاسل واستخدامها دائمًا بنفس الطريقة. إن لم تكن الأمور لن تتطابق.
  • في الإخراج تحصل دائمًا على مساحة زائدة وشرطة كما هو موضح في المثال:

    $ echo -n Welcome | md5sum
    7803ffcaea43bb81a439fde13b29bc35  -
    

للتخلص من ذلك والبقاء فقط مع الرمز 7803ffcaea43bb81a439fde13b29bc35، فعل: echo "$myvariable" | md5sum | cut -d" " -f1


2
2017-08-02 13:39



لا تنسوا -n المعلمة هنا لتجنب إخراج السطر الجديد الزاحف ، مما قد يؤدي إلى خطأ md5: echo -n $myvariable | md5sum | cut -d" " -f1 - derFunk