mysql과 같은 비밀번호 암호화

mysql과 같은 비밀번호 암호화

사용자를 생성했지만...비밀번호를 잊어버렸습니다.

mysql> 'right'로 식별되는 'blayo'@'%' 사용자를 생성합니다.

어떤 Linux 명령줄 도구가비밀번호는 mysql 5.5와 동일하게 암호화됩니까?

mysql> mysql.user에서 비밀번호, 사용자를 선택하세요.
-----------------------------+------ - +
*920018161824B14A1067A69626595E68CB8284CB |블라요 |

...올바른 것을 사용하고 있는지 확인하세요

$ 도구 오른쪽
*920018161824B14A1067A69626595E68CB8284CB

답변1

일부 단문:

MySQL(-u(user) -p를 추가해야 할 수도 있습니다):

mysql -NBe "select password('right')"

파이썬:

python -c 'from hashlib import sha1; print "*" + sha1(sha1("right").digest()).hexdigest().upper()'

진주:

perl -MDigest::SHA1=sha1_hex -MDigest::SHA1=sha1 -le 'print "*". uc sha1_hex(sha1("right"))'

PHP:

php -r 'echo "*" . strtoupper(sha1(sha1("right", TRUE))). "\n";'

루비:

ruby -e 'require "digest/sha1"; puts "*" + Digest::SHA1.hexdigest(Digest::SHA1.digest("right")).upcase'

모든 출력:

*920018161824B14A1067A69626595E68CB8284CB

답변2

글쎄, 사소한 (어쩌면부정 행위) 방법은 다음을 실행하는 것입니다.

mysql -NBe "select password('right')"

이는 귀하의 mysql 버전이 사용하는 비밀번호 해싱 체계를 사용하여 비밀번호를 생성합니다. [편집하다: 열 이름과 ASCII 테이블 아트를 제거하는 -NB가 추가되었습니다. ]

답변3

쉘을 사용하는 또 다른 방법:

echo -n 'right' | sha1sum | xxd -r -p |\
sha1sum | tr '[a-z]' '[A-Z]' | awk '{printf "*%s", $1}'

설명하다:

  1. echo -n인쇄할 때 줄 바꿈 없음
  2. sha1sum첫 번째 SHA1
  3. xxd -r -p16진수 해싱 취소
  4. sha1sum두 번째 SHA1
  5. tr '[a-z]' '[A-Z]'대문자로 변환
  6. awk '{print "*" $1}'선행 추가 *

자세한 내용은:

2.와 3. 사이에 awk '{printf "%s", $1}'개행 문자와 하이픈을 제거하는 선택적 단계를 삽입할 수 있습니다. 그러나 xxd는 어쨌든 이를 무시합니다(dave_thompson_085 덕분에).

{print "*" toupper($1)}또한 5단계와 6단계를 다음으로 대체하면 즉시 완료할 수 있습니다(dave_thompson_085 덕분에).

답변4

해시 값은 sha1(sha1(password)) 입니다.. 없기 때문에소금(이것은 심각한 보안 결함입니다)테이블에서 해시 값 찾기.

GNU coreutils 또는 BusyBox의 POSIX 도구와 sha1(sha1(password))을 사용하면 명령이 다이제스트를 16진수로 인쇄하고 바이너리로 변환할 수 있는 표준 도구가 없기 sha1sum때문에 계산하기가 번거롭습니다 .sha1sum

awk "$(printf %s 'right' | sha1sum |
       sed -e 's/ .*//' -e 's/../, 0x&/g' \
           -e 's/^/BEGIN {printf "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c"/' \
           -e 's/$/; exit}/')" | sha1sum

Python의 표준 라이브러리에는 표준 다이제스트가 있으므로 간단한 한 줄입니다.

printf %s 'right' |
python -c 'from hashlib import sha1; import sys; print sha1(sha1(sys.stdin.read()).digest()).hexdigest()'

또는 한 줄에 비밀번호를 입력하세요.

python -c 'from hashlib import sha1; print sha1(sha1("right").digest()).hexdigest()'

관련 정보