Arch Linux 명령줄을 통해 md5 해시를 만드는 방법은 무엇입니까?

Arch Linux 명령줄을 통해 md5 해시를 만드는 방법은 무엇입니까?

Arch Linux에서 명령줄을 사용하여 비밀번호에 대한 단일 md5 해시를 어떻게 생성할 수 있습니까? 물론 md5에는 없는 안전한 비밀번호 해싱 알고리즘이 있다는 것을 알고 있지만 이는 단지 실험의 일부일 뿐입니다.

답변1

간단히 echomd5sum으로 하세요.

첫 번째 결과는 해시를 생성하기 전에 문자열 끝의 개행 문자를 고려합니다.

$ echo P@ssword1 | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba  -

그렇지 않으면 다음과 같이@AFH개행 문자를 사용하지 않으려면 다음을 수행하십시오.

$ echo -n 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6  -

답변2

답변 중 어느 것도 를 사용하면 echo -n 'password' | …영구 저장소, 즉 기록에 비밀번호를 기록할 것이라는 언급이 없습니다.

셸에 따라 명령 앞에 공백을 추가하면 이를 방지할 수 있습니다(셸에서 테스트해 보세요). 이것이 어떻게 처리되는지에 대한 쉘 문서를 읽어보세요.

또는 를 실행 하고 비밀번호를 입력한 후 을(를) md5sum직접 입력 하여 사용할 수도 있습니다 . 해시에 개행 문자를 포함시키려는 경우가 아니면 비밀번호와 사이를 누르지 마십시오 .md5sumCtrl+DEnterCtrl+D

답변3

다음은 openssl을 사용한 예입니다.

echo -n 'stack overflow' | openssl md5
(stdin)= 481b8423202598ecfb233c5fa68caf68

Openssl은 언젠가 다른 해싱 알고리즘이 필요한 경우 여러 가지 해싱 알고리즘을 구현합니다.

답변4

echo모든 사람들이 적어도 대부분의 경우에는 를 사용하라고 제안하는 것 같습니다 -n.하나문제 (마지막에 개행 문자를 인쇄한다는 것).

그러나 echo반드시 일관성이 있는 것은 아닙니다. 여기에는 염두에 두어야 할 여러 가지 동작 특성이 있으며 시스템 간에 호환되지 않을 수 있습니다. 더 나은printf대신 사용.

따라서, 당신은 사용해야합니다

$ printf '%s' 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6  -
$

를 사용 printf하면 끝에 개행 문자를 추가하려면 명시적으로 직접 추가해야 합니다.

$ printf '%s\n' 'P@ssword1' | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba  -
$ echo 'P@ssword1' | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba  -
$

그것을 얻지 말라고 요청하는 대신 (그리고 echo시스템에서 동일하게 작동하기를 바라는 것은 나중에 실행될 일이 발생합니다):

$ echo -n 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6  -
$

요점을 확장하려면특이한 점echo위에서 언급한 몇 가지 사항은 다음과 같습니다.

  • 다양한 시스템에서 다르게 작동합니다. 많은 최신 시스템에서는 출력을 개행 문자로 종료하지 않도록 지원하지만 일부 시스템에서는 그렇지 않을 수도 있습니다 -n. echo그리고 실제로 인쇄하고 싶다면 어떻게 해야 할까요 -n? 일부 구현은 실제로 다음 사항에 따라 다를 수 있습니다.설정쉘이나 환경에서.
  • 일부 문자 시퀀스(특히 백슬래시 이스케이프 문자)를 특별한 방식으로 처리하거나 처리하지 않을 수 있습니다. 비밀번호에 비밀번호를 포함하는 것이 완전히 불합리한 것은 아니며 POSIX는 echo의 동작에 대해 아무것도 보장하지 않습니다(해당 동작은 구체적으로한정되지 않은) 첫 번째 인수가 -n백슬래시를 포함하는 경우입니다.

echo 대신 printf를 사용하는 것에 대한 위에 링크된 질문에 대한 답변에는 몇 가지 더 많은 내용이 있으며, 궁금하신 경우 더 많은 내용을 읽을 수 있는 추가 링크도 있습니다.

관련 정보