답변:
다음과 같이 말할 수도 있습니다.
~$ echo -n Welcome | md5sum
83218ac34c1834c26781fe4bde918ee4 -
기본적으로 @enzotib에서 설명한 것과 동일한 작업을 수행하지만 약간 더 간단합니다.
83218ac34c1834c26781fe4bde918ee4 -
-n
필수입니다. 그것없이, 당신의 해시는 개행 문자를 포함하기 때문에 완전히 잘못 될 것입니다.
-
마지막에 어떻게 무시할 수 있습니까 ? @jfmessier
매우 간단합니다. stdin을 받아들이므로
md5sum <<<"my string"
쉘이 추가 한 후행 줄 바꿈을 피하려면 다음을 수행하십시오.
printf '%s' "my string" | md5sum
<<<"
스크립트 에서 파이프 를 사용하는 경향이 있습니다 . echo string
커맨드 라인에서 승리합니다. 잘 했어.
printf
올바르게 사용하려면 +1하십시오 . 이없는 합계를 원하면을 -
넣습니다 | cut -d ' ' -f 1
. 사용법 :sum=$(printf '%s' 'some string' | md5sum | cut -d ' ' -f 1)
<<<
연산자와 printf
함수는 md5 해시에 대해 완전히 다른 결과를 제공합니다! printf의 결과는 정확합니다!
<<<
연산자를 사용 하면 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
이 일을 두 번 눌러야합니다.
--help
for에 대한 나의 빠른 찌르기는 md5sum
다음 명령 을 보여줍니다.
md5sum -
그런 다음 간단한 입력을위한 프롬프트를 표시합니다. 일부 텍스트를 입력 Enter한 다음 Ctrl+ D를 사용하여 파일의 끝 md5sum
을 나타내면 입력 한 원시 텍스트의 MD5를 뱉어냅니다 (포함 Enter, CR, IIRC입니다).
타이핑이 적고 배관이 없습니다! 그리고 쉘 히스토리에 평문 암호가 기록되는 것을 피하십시오! 우!
후행 CR을 원하지 않으면 (일반적으로 암호를 해시하려는 경우) + Enter전에 누르지 말고 대신 +를 두 번 입력하십시오 .CtrlDCtrlD
내 스크립트 에서이 문제에 대해 알아야 할 두 가지가 있음을 발견했습니다.
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
이를 수행하는 많은 예가 있지만 일부는 명시 적으로 또는 암시 적으로 줄 바꿈을 포함하고 일부는 그렇지 않으므로 일부는 동일하지 않습니다.
인기있는 방법 중 줄 바꿈을 포함하고 그렇지 않은 방법을 명확하게 지정하고 싶습니다.
다음은 개행 (CORRECT)없이 md5 해시 를 계산하는 몇 가지 예입니다 .
텍스트가있는 파일 사용 :
$ echo -n "test" > test.txt
$ wc test.txt
0 1 4 test.txt
$ md5sum test.txt
098f6bcd4621d373cade4e832627b4f6 test.txt
참고 : -n
에 echo
의미 : "하지 출력 후행 줄 바꿈을".
사용 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 -
md5 -s abcdefg