끝에 "-" 없이 SHA를 인쇄하시겠습니까?

끝에 "-" 없이 SHA를 인쇄하시겠습니까?

-끝에 추가 하지 않고 SHA 합계를 인쇄할 수 있습니까 ?

$ echo test | sha1sum 
4e1243bd22c66e76c2ba9eddc1f91394e57f9f83  -  <--- this "-" dash/hyphen

awk다른 명령줄 도구를 사용할 수 있다는 것을 알고 있지만다른 도구를 사용하지 않고도 할 수 있나요??

$ echo test | sha1sum | awk '{print $1}'
4e1243bd22c66e76c2ba9eddc1f91394e57f9f83

답변1

sha1sum 해시의 길이는 40자이므로 출력을 head 명령으로 파이프하고 처음 40자를 추출할 수 있습니다.

echo test | sha1sum | head -c 40

원천:https://stackoverflow.com/a/14992739/4642023

답변2

이는 다른 도구가 없거나 실제 sha1sum 스크립트/바이너리를 편집하지 않고는 불가능합니다. sha1sum이 파일에 입력되면 합계 뒤에 파일 이름이 인쇄됩니다. sha1sum이 파일과 함께 제공되지 않거나 파이프와 함께 사용되는 경우. - 입력이 파일이 아님을 나타내기 위해 자리 표시자로 사용됩니다.

답변3

Bash에는 추가 도구가 없습니다.

h=($(echo test | sha1sum )) ;echo $h 

4e1243bd22c66e76c2ba9eddc1f91394e57f9f83

또는

 h=( `echo test | sha1sum` ) ;echo $h 

Bash에서는 h의 "배열" 선언을 사용하여 태그가 지정된 다중 인덱스 배열을 만듭니다. 변수를 참조하기 위해 $h를 사용하여 배열을 다시 색인화하는 것은 ${h[0]}과 동일합니다.

기본 쉘 교체 사용

 h=`echo test | sha1sum` ;echo ${h// */} 

또는 posix 쉘(sh, dash, bash)을 사용하여 접미사 제거%

h=`echo test | sha1sum` ;echo ${h%-}

배열을 사용하는 것이 더 직관적인 옵션이지만 작동할 수도 있습니다.

Base64 추가

xxd + base64를 사용하여 인쇄 가능한 문자 범위에서 엔트로피를 증가(비트 수 감소)할 수 있습니다.

 h=($(echo test | sha1sum )) ;echo $h|xxd -r -p |base64
ThJDvSLGbnbCup7dwfkTlOV/n4M=

답변4

아무도 이것을 언급하지 않은 것이 이상해 보이지만 "tr" 명령을 사용하여 출력을 다듬는 것이 가장 쉽다는 것을 알았습니다. bash/perl/python 정규식에 대한 내용은 없지만 5분 동안 인터넷 검색 없이는 얻을 수 없습니다.

$ echo -n "hello" | sha256sum | tr -d "\n *-"
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

관련 정보