다른 컴퓨터의 crypt()

다른 컴퓨터의 crypt()

하드웨어 문제로 인해 필요한 것많은 가상 사용자 마이그레이션새로운 기계로. 비밀번호는 MySQL에 저장되며 다음을 사용하여 암호화됩니다.ENCRYPT최종 사용 crypt().

내 잘못일지도 모르지만 salt 비밀번호를 저장할 때 아무것도 추가되지 않았기 때문에 완전히 무작위입니다. 내 기본 아이디어는 데이터베이스를 덤프한 다음 가져오는 것입니다. 동일한 문자열을 동일한 컴퓨터에 저장하려고 하면 ENCRYPT다른 결과가 나타납니다. 사용자의 비밀번호를 새 시스템에서 사용할 수 있습니까?

환경 및 암호화 방법 업데이트:

  • Debian Etch와 MySQL 5.0을 실행하는 오래된 머신
  • 새 시스템은 Debian Squeeze 및 MySQL 5.1을 실행합니다.
  • 암호화 방법은 MySQL의 기본값입니다.ENCRYPT
  • 소금을 넣지 않은 것으로 나타났습니다
  • 비밀번호를 모르겠어요

피드백을 보내주셔서 감사합니다, Fabric님

답변1

제공된 링크에서ENCRYPT()

salt 매개변수가 제공되지 않으면 임의의 값이 사용됩니다.

salt암호화된 텍스트의 시작 부분에 저장된 2자리 문자열입니다. 예를 들어 salt='df'로 문자열을 암호화하려면 'df'가 출력 제품의 시작 부분에 있습니다.

mysql> SELECT ENCRYPT('hello','df');
+-----------------------+
| ENCRYPT('hello','df') |
+-----------------------+
| dfbVa429UeC0U         | 
+-----------------------+
1 row in set (0.00 sec)

또 다른 예를 들자면 아니다.salt

mysql> SELECT ENCRYPT('hello');
+------------------+
| ENCRYPT('hello') |
+------------------+
| oBSydDfeNx5ug    | 
+------------------+
1 row in set (0.00 sec)

이제 이전 문자열의 처음 두 문자를 다음과 같이 사용하십시오.salt

mysql> SELECT ENCRYPT('hello','oB');
+-----------------------+
| ENCRYPT('hello','oB') |
+-----------------------+
| oBSydDfeNx5ug         | 
+-----------------------+
1 row in set (0.00 sec)

동일한 출력.

문제가 발생하지 않을 가능성이 높지만 100% 확실하게(암호화 구현은 동일함) 이전 시스템에 테스트 계정을 생성하고 새 시스템으로 마이그레이션하십시오. 비밀번호가 둘 다에 적합한지 확인하세요.

편집하다:

salt언제나비밀번호로 암호화된 문자열의 첫 글자에 저장됩니다. 가지다절대 salt이 기능이 없으며, 이 기능이 없으면 salt사용자는 애초에 이전 컴퓨터에 로그인할 수 없습니다. 비밀번호를 알 필요도 없고 알 필요도 없습니다.

에칭에서 스크레이프로 마이그레이션하는 경우 가장 현명한 접근 방식은 Debian Squeeze를 사용하여 테스트 서버를 설정하는 것입니다. VirtualBox 게스트 설정과 같이 이를 수행하기 위해 하드웨어가 필요하지 않습니다. 그런 다음 이전 컴퓨터에서 새 사용자를 만들고 해당 계정을 테스트 컴퓨터로 마이그레이션합니다. 두 컴퓨터 모두에서 비밀번호가 작동한다면 아무 문제가 없습니다. 이것이 99.9% 확신할 수 있는 유일한 방법입니다. 그럼에도 불구하고 마이그레이션 테스트는 필수이며 이로 인해 발생하는 더 많은 문제에 대해 걱정해야 합니다.

관련 정보