터미널에서 직접 MD5 해시를 얻는 방법은 무엇입니까?


189

터미널에서 직접 MD5 해시를 어떻게 얻 습니까?

예를 들어 문자열을 abcdefg해시 하고 싶습니다 . 현재 md5sum 명령은 파일 이름 만 입력으로 허용합니다. 간단히 다음 줄을 입력하고 모든 작업을 완료하고 싶습니다.

md5sum abcdefg
output: ac54bcf346e578feb46888b3ecd2344f

어떻게하면 되나요?


2
md5 -s abcdefg
13:04에

답변:


252

다음과 같이 말할 수도 있습니다.

~$ echo -n Welcome | md5sum
83218ac34c1834c26781fe4bde918ee4  -

기본적으로 @enzotib에서 설명한 것과 동일한 작업을 수행하지만 약간 더 간단합니다.


2
7803ffca가 ... 결과로 당신은 또한, 예제 결과를 업데이트 할 추가 된 줄 바꿈. 위의 명령에 대한 정확한 결과는83218ac34c1834c26781fe4bde918ee4 -
Xanthir

19
왜 끝에 공백과 대시가 있습니까?
keune dec

1
내가 틀렸다면 정정하십시오.하지만 MD5sum이 관련된 파일 내용을 읽는 대신 데이터 스트림에 적용 되었기 때문이라고 생각합니다.
jfmessier

11
(가) 알 수 있습니다 -n필수입니다. 그것없이, 당신의 해시는 개행 문자를 포함하기 때문에 완전히 잘못 될 것입니다.
Pithikos

1
-마지막에 어떻게 무시할 수 있습니까 ? @jfmessier
alper

61

매우 간단합니다. stdin을 받아들이므로

md5sum <<<"my string"

쉘이 추가 한 후행 줄 바꿈을 피하려면 다음을 수행하십시오.

printf '%s' "my string" | md5sum

@messier와 @enzotib에게 투표권 부여; 둘 다 저의 소중한 "우아한 단순성"범주에 속합니다. <<<"스크립트 에서 파이프 를 사용하는 경향이 있습니다 . echo string커맨드 라인에서 승리합니다. 잘 했어.
Tom

3
printf올바르게 사용하려면 +1하십시오 . 이없는 합계를 원하면을 -넣습니다 | cut -d ' ' -f 1. 사용법 :sum=$(printf '%s' 'some string' | md5sum | cut -d ' ' -f 1)
Lekensteyn

1
이상하지만 <<<연산자와 printf함수는 md5 해시에 대해 완전히 다른 결과를 제공합니다! printf의 결과는 정확합니다!
Hamed Momeni

<<<연산자를 사용 하면 md5sum에 줄 바꿈이 전송됩니다!
Hamed Momeni

1
네, 첫 번째와 두 번째 예 사이에서 말했듯이
enzotib

27
$ 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

1
너무 길어요
Gucho Ca

1
awk의 대안 :cut -d ' ' -f 1
Blauhirn

md5() { echo -n $1 | md5sum | awk '{print $1}'; }.bashrc에 함수 를 만든 다음 $ md5 test명령 줄에서 사용할 수 있습니다 . 답변 주셔서 감사합니다
Ruben Benjamin

더 짧은 awk명령 :'$0=$1'
Alex Stragies

@AlexStragies yep
ty4z2008 2

10

인수없이 md5sum을 실행하면 터미널에서 입력을 읽습니다. 원하는 것을 입력하거나 붙여넣고 완료되면를 눌러 ctrl-d입력을 종료하십시오.


1
예, 당신도 옳습니다. 하지만 ctrl+d이 일을 두 번 눌러야합니다.
Hamed Momeni

@James, 개행을 따르지 않으면 예. 엔터를 친 후 명중하면 한 번만 필요합니다. 줄 바꿈을 따르지 않으면 줄에 입력 된 모든 문자가 줄 바꿈을 기다리지 않고 즉시 처리되도록합니다.
psusi

10
openssl md5 filename
openssl sha1 filename

문자열 파이프의 경우 echo를 사용하여 내용

echo -n 123456 | openssl md5

4

--helpfor에 대한 나의 빠른 찌르기는 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
derFunk

1

이를 수행하는 많은 예가 있지만 일부는 명시 적으로 또는 암시 적으로 줄 바꿈을 포함하고 일부는 그렇지 않으므로 일부는 동일하지 않습니다.

인기있는 방법 중 줄 바꿈을 포함하고 그렇지 않은 방법을 명확하게 지정하고 싶습니다.

다음은 개행 (CORRECT)없이 md5 해시 를 계산하는 몇 가지 예입니다 .

텍스트가있는 파일 사용 :

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

참고 : -necho의미 : "하지 출력 후행 줄 바꿈을".

사용 echo하여 -n인라인 :

$ 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 해시 를 계산하는 몇 가지 예입니다 (SO NOT CORRECT).

텍스트가있는 파일 사용 :

$ 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  -
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.