다음은 암호와 같은 문자열에 솔트가 적용될 때 출력을 표시하는 예제입니다. 먼저 매우 약한 암호를 정의합니다: 빠른 계산은 예를 들어 무차별 암호 대입 공격이 더 빠르는 것을 의미합니다. CPU와 GPU 형태의 최신 하드웨어는 초당 SHA-256 해시의 수백만 또는 수십억을 계산할 수 있습니다. 빠른 함수 대신 암호를 해시하는 속도가 느린 기능이 필요하므로 공격자가 거의 중단됩니다. 또한 이 함수를 적응형으로 적용하여 시간이 지남에 따라 함수를 느리게 실행하고 느리게 실행할 수 있으므로 향후 더 빠른 하드웨어를 보완할 수 있기를 바랍니다. Bcrypt는 복어 암호화를 기반으로 닐스 프로보스와 데이비드 맥시에르에 의해 설계된 암호 해싱 기능입니다. 그것은 OpenBSD 시스템 및 일부 리눅스와 SUSE 배포판에서 기본적으로 사용됩니다. 암호와 연결된 해시를 생성하는 데 사용되는 임의의 조각인 salt라는 기본 제공 값이 있으며 데이터베이스에 저장됩니다. 이렇게 하면 동일한 두 암호가 동일한 해시를 생성하지 못하게 되며, 예를 들어 시스템의 모든 암호에 대한 무차별 암호 대입 공격이 한 번에 수반되는 문제가 발생합니다. 또 다른 관련 공격은 텍스트와 관련 해시 간의 연결 테이블인 Rainbow 테이블로 계산을 피하고 암호 검색 속도를 높이는 것입니다. 솔트에서는 암호와 연결된 해시가 고유하지 않도록 하는 복잡성이 추가됩니다. Bcrypt는 동기화 및 비동기 메서드를 모두 지원합니다. 해시는 CPU를 많이 사용하며 동기 버전은 이벤트 루프를 차단하고 앱이 종료될 때까지 다른 요청을 처리하지 못하도록 하기 때문에 비동기 접근 방식을 사용하는 것이 좋습니다.

이제 사용할 준비가 되었습니다. 다음은 코드에서 사용하는 방법의 예입니다. 쉬운. 위의 node.js 및 파이썬 예제에서 몇 가지 지점에서 숫자 10을 발견 했을 수 있습니다. 이 숫자는 비용 매개 변수입니다. 비용 매개 변수는 하나의 해시를 완료하는 데 필요한 시간을 늘리는 데 사용됩니다. 비용 매개 변수가 매우 높으면 해시를 완료하는 데 시간이 더 오래 걸릴 수 있습니다. 암호가 하나만 있는 사용자의 경우 500ms를 기다리는 것이 눈에 띄지 않습니다. 수십억 개 이상의 암호를 가진 공격자의 경우 시스템 크래킹이 불가능해질 수 있습니다. 코드로 이동하기 전에 라이브러리의 작동 방식에 대한 실용적인 예를 살펴보겠습니다.

우리가 등록 할 때 우리의 암호가 abc123이라고 가정 해 봅시다.