Bir dize MD5 karma doğrudan terminalde nasıl elde edilir?


189

Nasıl alırım MD5 terminalinden doğrudan bir dize karmasını?

Örneğin, dize abcdefgkarma olmasını istiyorum . Şu anda md5sum komutu yalnızca bir dosya adını girdi olarak kabul eder. Ben sadece aşağıdaki satırı ve her şey ile yapılacak girmek istiyorum.

md5sum abcdefg
output: ac54bcf346e578feb46888b3ecd2344f

Bunu nasıl başarabilirim?


2
md5 -s abcdefg
raitisd

Yanıtlar:


252

Bunun gibi bir şey de söyleyebilirsiniz:

~$ echo -n Welcome | md5sum
83218ac34c1834c26781fe4bde918ee4  -

Temel olarak @enzotib tarafından tarif edilenle aynı şeyi yapar, ancak belki biraz daha basittir.


2
7803ffca ... Sonuç olarak da, örneğin sonucunu güncelleştirmek istediğiniz ile eklenen yeni satır. Yukarıdaki komut için doğru sonuç83218ac34c1834c26781fe4bde918ee4 -
Xanthir

19
neden sonunda boşluklar ve kısa bir çizgi var?
keune

1
Lütfen hatalıysam beni düzelt, ancak bunun nedeni MD5sum'un, kendisiyle ilişkilendirilmiş bir adı olan bir dosya içeriğini okumak yerine, bir veri akışına uygulanmasından kaynaklanıyor.
jfmessier

11
-nZorunlu olduğuna dikkat edin . Onsuz, yeni satır karakterini içerdiğinden karma değeriniz tamamen yanlış olacaktır.
Pithikos

1
-Sonunda nasıl görmezden gelebilirim . @jfmessier
alper

61

Çok basit, stdin'i kabul ediyor, yani

md5sum <<<"my string"

Kabuk tarafından eklenen sondaki yeni satırdan kaçınmak için:

printf '%s' "my string" | md5sum

@Messier ve @enzotib'e oy vermek; ikisi de benim "zarif basitlik" kategorisine giriyor. <<<"Boruyu bir komut dosyasında kullanmaya uygun olurdum ; echo stringKomut satırı için kazanır. Aferin.
Tom,

3
printfDoğru kullanmak için +1 . Toplam olmadan sahip olmak istiyorsanız -, koyun | cut -d ' ' -f 1. Örnek kullanım:sum=$(printf '%s' 'some string' | md5sum | cut -d ' ' -f 1)
Lekensteyn

1
garip ama <<<operatör ve printfişlev md5 hash için tamamen farklı sonuçlar veriyor! printf sonucu olsa doğrudur!
Hamed Momeni

<<<operatörün kullanılması md5sum'a yeni bir hat gönderiyor!
Hamed Momeni,

1
Evet, ilk ve ikinci örnek arasında
dediğim

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

Bir kabuk betiği oluşturabilirsiniz.

Örneğin, komut dosyası adı md5.sh:

#!/bin/bash

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

izin yürütme:

 chmod +x md5.sh

Sonra:

$ md5.sh 123456
e10adc3949ba59abbe56e057f20f883e

Sisteminiz macOS ise. Bu betiği değiştirmeniz gerekiyor:

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

1
Bu çok uzun.
Gucho Ca

1
awk alternatif:cut -d ' ' -f 1
Blauhirn

md5() { echo -n $1 | md5sum | awk '{print $1}'; }.Bashrc'de bir fonksiyon yarattım $ md5 testve komut satırında kullanabiliyorum. cevap için teşekkürler
Ruben Benjamin

Daha kısa awkkomut:'$0=$1'
Alex Stragies

@AlexStragies yep
ty4z2008

10

Md5sum işlevini hiç bir argüman olmadan çalıştırmak terminalin girişini okumasına neden olur. İstediğinizi yazın veya yapıştırın ve tamamladığınızda ctrl-dgirişi sonlandırmak için tuşuna basın .


1
evet, sen de haklısın. ancak ctrl+dçalışması için iki kez basılması gerekiyor.
Hamed Momeni 30:11

@James, yeni bir çizgiyi takip etmiyorsa, evet. Girdikten sonra vurursanız, sadece bir kez gerekir. Yeni bir satır takip etmediğinde, satırda yazılan tüm karakterleri, yeni satır beklemek yerine hemen işlenmeye zorlar.
psusi

10
openssl md5 filename
openssl sha1 filename

Dize borusu için echo kullanarak içerik

echo -n 123456 | openssl md5

4

Benim hızlı dürtme, --helpfor md5sumkomutunu gösterir:

md5sum -

daha sonra basit giriş için bir istemi verecektir. Bazı metinleri girip ardından Enterve ardından Ctrl+ tuşlarını kullanarak Ddosyanın sonunu belirtmek md5sumiçin girdiğiniz ham metnin MD5 değerinin tükenmesine neden olur ( Enterbunun da bir CR, IIRC olması).

Yazmak için daha az ve boru yok! Ve düz metin şifrenizin kabuk geçmişine kaydedilmesinden kaçının! Woo!

Sondaki CR'yi istemiyorsanız (bu genellikle bir şifre kullanmak istiyorsanız geçerlidir), + işaretinden Enterönce isabet etmeyin , bunun yerine + tuşunu iki kez girin .CtrlDCtrlD


2

Komut dosyalarımda bu konuda bilmeniz gereken 2 şey olduğunu gördüm.

  • Bunu yaparsanız farketmez echo "$myvariable"ya echo -n "$myvariable" ama her zaman dizeleri doubleqoutes kullanmak ve her zaman aynı yöntemi kullanmalıdır. eğer şeyler eşleşmeyecekse.
  • çıktıda her zaman bir takip alanı ve örnekte gösterildiği gibi bir çizgi alırsınız:

    $ echo -n Welcome | md5sum
    7803ffcaea43bb81a439fde13b29bc35  -
    

ondan kurtulmak ve yalnızca kodla kalmak için 7803ffcaea43bb81a439fde13b29bc35şunları yapın:echo "$myvariable" | md5sum | cut -d" " -f1


-nYanlış bir echo -n $myvariable | md5sum | cut -d" " -f1
md5'e

1

Bunu yapmak için pek çok örnek var, ancak bazıları eşdeğer değil çünkü bazıları açıkça veya örtük olarak newline'ı içeriyor, bazıları ise bunu içermiyor.

Popüler yöntemlerden hangisinin yeni satırı içerdiğini ve hangilerinin olmadığını açıkça belirtmek isterim.

İşte takip eden yeni satır (CORRECT) OLMADAN md5 hash'ını hesaplamanın bazı örnekleri :

Metin içeren bir dosya kullanma:

$ echo -n "test" > test.txt
$ wc test.txt
0 1 4 test.txt
$ md5sum test.txt
098f6bcd4621d373cade4e832627b4f6  test.txt

Not: -n in echoyardımıyla: "do not çıktı satırsonu karakterini".

Satır içi echoile kullanma -n:

$ echo -n "test" | md5sum
098f6bcd4621d373cade4e832627b4f6  -

Kullanarak printf:

$ printf "%s" "test" | md5sum
098f6bcd4621d373cade4e832627b4f6  -

Sadece md5sumkomut kullanarak :

(Yazalım md5sum, tuşuna basıp Enterstring yazıp testçift ​​kombinasyona basınız Ctrl+ d)

$ md5sum
test098f6bcd4621d373cade4e832627b4f6  -

md5sum -Komutu kullanarak :

(Yazalım md5sum -, tuşuna basıp Enterstring yazıp testçift ​​kombinasyona basınız Ctrl+ d)

$ md5sum -
test098f6bcd4621d373cade4e832627b4f6  -

İşte md5 hash WITH izleyen newline (SO NOT DOĞRU) hesaplamak için bazı örnekler :

Metin içeren bir dosya kullanma:

$ echo "test" > test_n.txt
$ wc test_n.txt
1 1 5 test_n.txt
$ md5sum test_n.txt
d8e8fca2dc0f896fd7cb4cb0031ba249  test_n.txt

Satır içi çizgi echoolmadan kullanma -n:

echo "test" | md5sum
d8e8fca2dc0f896fd7cb4cb0031ba249  -

Kullanılması burada dizeleri :

$ md5sum <<< "test"
d8e8fca2dc0f896fd7cb4cb0031ba249  -

Sadece md5sumkomutu kullanarak fakat Entermetni yazdıktan sonra tuşuyla:

(Hadi yazalım md5sum, Entersonra yazı yazın testve sonra agaien Enterve bir kez kombinasyon Ctrl+ basın d)

$ md5sum
test
d8e8fca2dc0f896fd7cb4cb0031ba249  -

md5sum -Komutu kullanarak ancak Entermetni yazdıktan sonra tuşuyla:

(Hadi yazalım md5sum -, Entersonra yazı yazın testve sonra agaien Enterve bir kez kombinasyon Ctrl+ basın d)

$ md5sum -
test
d8e8fca2dc0f896fd7cb4cb0031ba249  -
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.