암호가 "salt"로 암호화 된 경우 데이터베이스에서 암호를 확인하는 방법은 무엇입니까?

Saliery

나는 "암호를 소금에 절인"방법보다 암호 보호를 향상시키는 방법을 읽었습니다. 하지만 비밀번호가 복잡한 형태로 저장되어 있으면 확인하는 방법을 모르겠습니다. 사용자의 암호가 클라이언트에서 암호화되고 해시 코드가 데이터베이스의 해시 코드와 비교된다고 가정합니다. 웹 개발 경험이 없습니다. 저는 웹 보안 방법을 배우고 있습니다.

해물

당신이 현재 그것을 배우고 있다고 말했기 때문에 나는 약간의 인트로를 제공하려고 노력할 것입니다. 그리고 가능한 한 짧게 만들려고 노력할 것입니다.

  • Salt우리가 생성하고 일반 암호 / 암호 문구에 추가하는 임의의 문자열입니다. plain바로 옆에있는 데이터베이스에 저장 될 수 있습니다 Hash Value.
  • Hashing길이가 고정 된 값에 데이터를 매핑하는 방법입니다. 이 값을 Hash Value또는 이라고 checksum합니다. 해싱은 단방향입니다. MD5 및 SHA256은 해싱 알고리즘의 몇 가지 예입니다.

소금의 이점

여기서 우리가하는 일은 기본적으로 모든 사용자가 (해시 출력에서) 고유 한 암호를 가지고 있는지 확인하는 것입니다. 이렇게하면 동시에 여러 사용자의 암호를 계산하기 위해 사용자 데이터를 캡처 한 공격자가 방지 할 수 있습니다.

또 다른 말은 누군가가 모든 사용자 이름과 암호를 볼 때 어떤 사용자가 동일한 암호를 사용하는지 말할 수 없다는 것입니다.

다음 표는이를 더 잘 이해하는 데 도움이됩니다.

| username | salt             | plain-password |salted-password-to-be-hashed | hashed-password                                                  |
|----------|------------------|----------------|------------------------------|------------------------------------------------------------------|
| user1    | db97913154884d72 | password1      | passworddb97913154884d72     | 5027a576d161385ddcc72e47280f85729fc3ba5e48e0a018e2f68dc7d13e93cc |
| user2    | 8fc2884d127fd40b | password1      | password18fc2884d127fd40b    | 6069e0e5a06d41ed0ffb06d0c0e26dd7dea3cb14de80e4075848d3217b40b783 |

다음 단계는 저장 및 인증 하는 기본 방법보여줍니다 .

저장하는 방법? (레지스터)

  • plain-password통해 클라이언트에서 백 엔드 응용 프로그램에 제공됩니다 https.
  • 백엔드 응용 프로그램은 생성 salt하고 일반 암호에 추가 (또는 앞에 추가)합니다.
  • 그런 다음 hashed-password해싱 알고리즘 (예 : SHA-256, MD5 등)을 사용하여 계산합니다.
  • 마지막으로, 저장 username, salthashed-password데이터베이스에. (저장 plain-password및 / 또는 salted-password-to-be-hashed.)

인증하는 방법?

  • plain-password통해 클라이언트에서 백 엔드 응용 프로그램에 제공됩니다 https.
  • 백엔드 응용 프로그램은 salt데이터베이스에서 특정 사용자를 가져와 일반 암호에 추가 (또는 앞에 추가)합니다.
  • 그런 다음 hashed-password동일한 해싱 알고리즘을 사용하여 계산 하고 저장된 알고리즘과 비교합니다.

좀 더 고급 :

라는 두 번째 솔트를 추가 할 수도 있습니다 pepper. 이것은 일반 비밀번호 (pepper + plain-password + salt)에 추가 할 또 다른 임의의 문자열입니다. 그러나 여기서는 pepper옆이 아닌 다른 데이터 소스에 저장됩니다 .salthashed-password

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

UCanAccess를 데이터베이스 암호로 암호화 된 Access 데이터베이스에 연결하는 방법은 무엇입니까?

분류에서Dev

CakePHP 해싱 알고리즘 및 SALT를 사용하여 CakePHP 웹 사이트 데이터베이스 용 MySQL에서 암호화 된 암호를 생성하는 SQL 문을 작성하는 방법은 무엇입니까?

분류에서Dev

libSodium으로 암호화 된 데이터베이스 열을 검색하는 방법은 무엇입니까?

분류에서Dev

해시 된 암호를 데이터베이스로 전달하는 방법은 무엇입니까?

분류에서Dev

Java : 암호화 된 데이터베이스 (및 기타) 암호를 속성 파일에 저장하는 가장 좋은 옵션은 무엇입니까?

분류에서Dev

7-Zip으로 암호화 된 zip 파일 암호가 하드 드라이브에 저장되는 것을 방지하는 방법은 무엇입니까?

분류에서Dev

응답이 암호화 된 json 인 경우 Content-Type은 무엇입니까?

분류에서Dev

가입 (패스 해싱)과 로그인이 두 가지 다른 자바 스크립트 기능에있을 때 데이터베이스의 해시 된 암호와 암호를 비교하는 방법은 무엇입니까?

분류에서Dev

암호에서 파생 된 키로 암호화 된 파일 ... 사용자가 암호를 잊어 버린 경우

분류에서Dev

암호화 된 암호없이 Adonis에서 "인증"을 사용하는 방법은 무엇입니까?

분류에서Dev

SqlBulkCopy를 사용하여 데이터베이스의 암호화 된 열을 채우는 방법은 무엇입니까?

분류에서Dev

전체 디스크 암호화의 암호를 변경하는 방법은 무엇입니까?

분류에서Dev

Python에서 RSA 개인 키로 데이터를 암호화하는 방법은 무엇입니까?

분류에서Dev

Bitlocker로 암호화 된 드라이브를 포맷하는 방법은 무엇입니까?

분류에서Dev

Bitlocker로 암호화 된 드라이브를 포맷하는 방법은 무엇입니까?

분류에서Dev

명령 줄에서 컵으로 암호로 보호 된 PDF를 인쇄하는 방법은 무엇입니까?

분류에서Dev

<script>의 소스를 암호화 된 문자열로 설정하는 방법은 무엇입니까?

분류에서Dev

C의 MCrypt, 암호화가 일반 텍스트를 해시 / 암호화 데이터로 변경하지 않는 이유는 무엇입니까?

분류에서Dev

자체 암호화 드라이브 (SED)가 실제로 암호화되었는지 확인하는 방법은 무엇입니까?

분류에서Dev

암호 확인 코드가 주어진 경우 암호를 리버스 엔지니어링하는 방법

분류에서Dev

암호화되지 않은 Ubuntu에서 암호화 된 Debian을 부팅하는 방법은 무엇입니까?

분류에서Dev

C # SQL) Azure SQL 데이터베이스에 대한 web.config의 연결 문자열을 암호화하는 방법은 무엇입니까? (그리고 암호 해독을 위해 키를 Azure SQL 데이터베이스로 가져 오나요?)

분류에서Dev

암호화 된 경우 Azure Document DB에서 데이터를 볼 수있는 이유는 무엇인가요?

분류에서Dev

Devise 모델에 이미 암호화 된 비밀번호를 삽입하는 방법은 무엇입니까?

분류에서Dev

ASP.Net-C # 암호가 정확할 때까지 페이지의 데이터가 보호되도록 암호로 보호 된보기를 만드는 방법

분류에서Dev

한 구독에서 다른 구독으로 암호화 된 열이있는 Azure SQL Server 데이터베이스를 복사하는 가장 좋은 방법

분류에서Dev

암호를 해시로 저장 한 다음 일반 텍스트로 된 암호를 몰라도 사용자를 인증하는 방법은 무엇입니까?

분류에서Dev

암호로 보호 된 MS Access 테이블을 Excel로 가져 오는 방법은 무엇입니까?

분류에서Dev

프로그래밍 방식으로 변경할 때 새 Microsoft Access 데이터베이스 암호를 이스케이프하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    UCanAccess를 데이터베이스 암호로 암호화 된 Access 데이터베이스에 연결하는 방법은 무엇입니까?

  2. 2

    CakePHP 해싱 알고리즘 및 SALT를 사용하여 CakePHP 웹 사이트 데이터베이스 용 MySQL에서 암호화 된 암호를 생성하는 SQL 문을 작성하는 방법은 무엇입니까?

  3. 3

    libSodium으로 암호화 된 데이터베이스 열을 검색하는 방법은 무엇입니까?

  4. 4

    해시 된 암호를 데이터베이스로 전달하는 방법은 무엇입니까?

  5. 5

    Java : 암호화 된 데이터베이스 (및 기타) 암호를 속성 파일에 저장하는 가장 좋은 옵션은 무엇입니까?

  6. 6

    7-Zip으로 암호화 된 zip 파일 암호가 하드 드라이브에 저장되는 것을 방지하는 방법은 무엇입니까?

  7. 7

    응답이 암호화 된 json 인 경우 Content-Type은 무엇입니까?

  8. 8

    가입 (패스 해싱)과 로그인이 두 가지 다른 자바 스크립트 기능에있을 때 데이터베이스의 해시 된 암호와 암호를 비교하는 방법은 무엇입니까?

  9. 9

    암호에서 파생 된 키로 암호화 된 파일 ... 사용자가 암호를 잊어 버린 경우

  10. 10

    암호화 된 암호없이 Adonis에서 "인증"을 사용하는 방법은 무엇입니까?

  11. 11

    SqlBulkCopy를 사용하여 데이터베이스의 암호화 된 열을 채우는 방법은 무엇입니까?

  12. 12

    전체 디스크 암호화의 암호를 변경하는 방법은 무엇입니까?

  13. 13

    Python에서 RSA 개인 키로 데이터를 암호화하는 방법은 무엇입니까?

  14. 14

    Bitlocker로 암호화 된 드라이브를 포맷하는 방법은 무엇입니까?

  15. 15

    Bitlocker로 암호화 된 드라이브를 포맷하는 방법은 무엇입니까?

  16. 16

    명령 줄에서 컵으로 암호로 보호 된 PDF를 인쇄하는 방법은 무엇입니까?

  17. 17

    <script>의 소스를 암호화 된 문자열로 설정하는 방법은 무엇입니까?

  18. 18

    C의 MCrypt, 암호화가 일반 텍스트를 해시 / 암호화 데이터로 변경하지 않는 이유는 무엇입니까?

  19. 19

    자체 암호화 드라이브 (SED)가 실제로 암호화되었는지 확인하는 방법은 무엇입니까?

  20. 20

    암호 확인 코드가 주어진 경우 암호를 리버스 엔지니어링하는 방법

  21. 21

    암호화되지 않은 Ubuntu에서 암호화 된 Debian을 부팅하는 방법은 무엇입니까?

  22. 22

    C # SQL) Azure SQL 데이터베이스에 대한 web.config의 연결 문자열을 암호화하는 방법은 무엇입니까? (그리고 암호 해독을 위해 키를 Azure SQL 데이터베이스로 가져 오나요?)

  23. 23

    암호화 된 경우 Azure Document DB에서 데이터를 볼 수있는 이유는 무엇인가요?

  24. 24

    Devise 모델에 이미 암호화 된 비밀번호를 삽입하는 방법은 무엇입니까?

  25. 25

    ASP.Net-C # 암호가 정확할 때까지 페이지의 데이터가 보호되도록 암호로 보호 된보기를 만드는 방법

  26. 26

    한 구독에서 다른 구독으로 암호화 된 열이있는 Azure SQL Server 데이터베이스를 복사하는 가장 좋은 방법

  27. 27

    암호를 해시로 저장 한 다음 일반 텍스트로 된 암호를 몰라도 사용자를 인증하는 방법은 무엇입니까?

  28. 28

    암호로 보호 된 MS Access 테이블을 Excel로 가져 오는 방법은 무엇입니까?

  29. 29

    프로그래밍 방식으로 변경할 때 새 Microsoft Access 데이터베이스 암호를 이스케이프하는 방법은 무엇입니까?

뜨겁다태그

보관