คำตอบ:
คุณสามารถพูดบางสิ่งเช่นนี้:
~$ echo -n Welcome | md5sum
83218ac34c1834c26781fe4bde918ee4 -
โดยทั่วไปแล้วมันทำสิ่งเดียวกันกับที่อธิบายโดย @enzotib แต่อาจจะง่ายกว่าเล็กน้อย
83218ac34c1834c26781fe4bde918ee4 -
-n
เป็นข้อบังคับ หากไม่มีแฮชของคุณจะผิดทั้งหมดเนื่องจากมีอักขระขึ้นบรรทัดใหม่
-
ในตอนท้าย @jfmessier
ง่ายมากยอมรับ stdin ดังนั้น
md5sum <<<"my string"
เพื่อหลีกเลี่ยงการขึ้นบรรทัดใหม่ต่อท้ายที่เพิ่มโดยเชลล์:
printf '%s' "my string" | md5sum
<<<"
ไปป์ในสคริปต์ echo string
ชนะสำหรับ commandline ทำได้ดี.
printf
อย่างถูกต้อง หากคุณต้องการที่จะมีผลรวมโดยไม่ได้ใส่-
| cut -d ' ' -f 1
ตัวอย่างการใช้งาน:sum=$(printf '%s' 'some string' | md5sum | cut -d ' ' -f 1)
<<<
ดำเนินการและprintf
ฟังก์ชั่นให้ผลลัพธ์ที่แตกต่างอย่างสิ้นเชิงสำหรับ md5 hash! ผลลัพธ์ของ printf นั้นถูกต้องแล้ว!
<<<
โอเปอเรเตอร์จะส่ง newline ไปที่ md5sum!
$ echo -n 123456 | md5sum | awk '{print $1}'
e10adc3949ba59abbe56e057f20f883e
คุณสามารถสร้างเชลล์สคริปต์
ตัวอย่างเช่นชื่อสคริปต์คือ 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
cut -d ' ' -f 1
md5() { echo -n $1 | md5sum | awk '{print $1}'; }
ใน. bashrc จากนั้นฉันสามารถใช้$ md5 test
ในบรรทัดคำสั่ง ขอบคุณสำหรับคำตอบ
awk
คำสั่งที่สั้นกว่า:'$0=$1'
การรัน md5sum โดยไม่มีข้อโต้แย้งใด ๆ จะทำให้อ่านอินพุตจากเทอร์มินัล พิมพ์หรือวางสิ่งที่คุณต้องการและเมื่อเสร็จแล้วกดctrl-d
เพื่อสิ้นสุดอินพุต
ctrl+d
ต้องกดสองครั้งเพื่อให้ทำงานได้
openssl md5 filename
openssl sha1 filename
สำหรับไพพ์ไลน์เนื้อหาใช้ echo
echo -n 123456 | openssl md5
โผล่อย่างรวดเร็วของฉันที่--help
สำหรับmd5sum
แสดงให้เห็นว่าคำสั่ง:
md5sum -
จะให้พรอมต์สำหรับการป้อนข้อมูลอย่างง่าย การป้อนข้อความบางส่วนจากนั้นใช้Enterและจากนั้นCtrl+ Dเพื่อแสดงถึงจุดสิ้นสุดไฟล์แล้วทำให้เกิดmd5sum
การคาย MD5 ของข้อความดิบที่คุณป้อน (รวมถึงEnterมันคือ CR, IIRC)
พิมพ์น้อยลงและไม่มีการวางท่อ! และหลีกเลี่ยงรหัสผ่านธรรมดาของคุณที่ถูกบันทึกไว้ในประวัติเชลล์! แอ่ว!
หากคุณไม่ต้องการ CR ต่อท้าย (ซึ่งโดยปกติจะเป็นกรณีถ้าคุณต้องการแฮชรหัสผ่าน) อย่ากดปุ่ม+ Enterก่อนหน้านี้ให้ป้อน+ สองครั้งแทนCtrlDCtrlD
ในสคริปต์ของฉันฉันพบว่ามี 2 สิ่งที่คุณควรรู้เกี่ยวกับปัญหานี้
echo "$myvariable"
หรือecho -n "$myvariable"
แต่คุณควรใช้ doubleqoutes สำหรับสตริงและมักจะใช้วิธีการเดียวกัน หากไม่ใช่สิ่งที่ไม่ตรงกันในผลลัพธ์คุณจะได้รับพื้นที่ต่อท้ายและเส้นประเสมอตามที่แสดงในตัวอย่าง:
$ echo -n Welcome | md5sum
7803ffcaea43bb81a439fde13b29bc35 -
เพื่อกำจัดสิ่งนั้นและอยู่กับรหัส7803ffcaea43bb81a439fde13b29bc35
เท่านั้นให้ทำ:echo "$myvariable" | md5sum | cut -d" " -f1
-n
พารามิเตอร์ที่นี่เพื่อหลีกเลี่ยงการแสดงบรรทัดใหม่ที่ต่อท้ายซึ่งจะนำไปสู่การ md5 ที่ไม่ถูกต้อง:echo -n $myvariable | md5sum | cut -d" " -f1
มีตัวอย่างมากมายที่ต้องทำเช่นนี้ แต่บางคนก็ไม่เท่ากันเพราะบางคนมีการขึ้นบรรทัดใหม่อย่างชัดเจนหรือโดยนัยรวมถึงการขึ้นบรรทัดใหม่และบางคนไม่ได้ทำ
ฉันต้องการระบุอย่างชัดเจนว่าวิธีใดที่ได้รับความนิยมรวมถึงการขึ้นบรรทัดใหม่และที่ไม่ใช่
นี่คือตัวอย่างพร้อมที่จะคำนวณแฮชmd5โดยไม่ต้องขึ้นบรรทัดใหม่ (แก้ไข):
การใช้ไฟล์ที่มีข้อความ:
$ echo -n "test" > test.txt
$ wc test.txt
0 1 4 test.txt
$ md5sum test.txt
098f6bcd4621d373cade4e832627b4f6 test.txt
หมายเหตุ: -n
ในecho
หมายถึง "ไม่เอาท์พุทขึ้นบรรทัดใหม่"
ใช้echo
กับ-n
inline:
$ echo -n "test" | md5sum
098f6bcd4621d373cade4e832627b4f6 -
การใช้printf
:
$ printf "%s" "test" | md5sum
098f6bcd4621d373cade4e832627b4f6 -
ใช้md5sum
คำสั่งเท่านั้น:
(ลองเขียนmd5sum
กดและEnterเขียนสตริงtest
จากนั้นกดรวมกันสองครั้งCtrl+ d)
$ md5sum
test098f6bcd4621d373cade4e832627b4f6 -
ใช้md5sum -
คำสั่ง:
(ลองเขียนmd5sum -
กดและEnterเขียนสตริงtest
จากนั้นกดรวมกันสองครั้งCtrl+ d)
$ md5sum -
test098f6bcd4621d373cade4e832627b4f6 -
นี่คือตัวอย่างบางส่วนไปพร้อมกับการคำนวณที่มีmd5กัญชาที่มีต่อท้ายบรรทัดใหม่ (จึงไม่ถูกต้อง):
การใช้ไฟล์ที่มีข้อความ:
$ echo "test" > test_n.txt
$ wc test_n.txt
1 1 5 test_n.txt
$ md5sum test_n.txt
d8e8fca2dc0f896fd7cb4cb0031ba249 test_n.txt
ใช้แบบอินไลน์echo
โดยไม่ต้อง-n
:
echo "test" | md5sum
d8e8fca2dc0f896fd7cb4cb0031ba249 -
ใช้ที่นี่สตริง :
$ md5sum <<< "test"
d8e8fca2dc0f896fd7cb4cb0031ba249 -
ใช้md5sum
คำสั่งเท่านั้นแต่มีEnterคีย์หลังจากเขียนข้อความ:
(ลองเขียนmd5sum
กดและEnterเขียนสตริงtest
จากนั้นกด agaien Enterและเมื่อรวมกันCtrl+ d)
$ md5sum
test
d8e8fca2dc0f896fd7cb4cb0031ba249 -
ใช้md5sum -
คำสั่ง แต่มีEnterคีย์หลังจากเขียนข้อความ:
(ลองเขียนmd5sum -
กดและEnterเขียนสตริงtest
จากนั้นกด agaien Enterและเมื่อรวมกันCtrl+ d)
$ md5sum -
test
d8e8fca2dc0f896fd7cb4cb0031ba249 -
md5 -s abcdefg