You are looking for information, articles, knowledge about the topic nail salons open on sunday near me bcrypt 복호화 on Google, you do not find the information you need! Here are the best content compiled and compiled by the https://chewathai27.com/to team, along with other related topics such as: bcrypt 복호화 Bcrypt 복호화 사이트, Bcrypt 암호화 사이트, Node JS bcrypt 복호화, Bcrypt matches, Java BCrypt 복호화, Spring 암호화 복호화, Bcrypt 원리, Bcrypt 사용법
[ BCrypt ] Spring-security 비밀번호 암호화, 복호화 로직 활용
- Article author: u-it.tistory.com
- Reviews from users: 2749 Ratings
- Top rated: 4.8
- Lowest rated: 1
- Summary of article content: Articles about [ BCrypt ] Spring-security 비밀번호 암호화, 복호화 로직 활용 [ BCrypt ] Spring-security 비밀번호 암호화, 복호화 로직 활용 … 내부적으로 이미 저장되있는 security방식의 암호화 키를 복호화하여 비교해주고 … …
- Most searched keywords: Whether you are looking for [ BCrypt ] Spring-security 비밀번호 암호화, 복호화 로직 활용 [ BCrypt ] Spring-security 비밀번호 암호화, 복호화 로직 활용 … 내부적으로 이미 저장되있는 security방식의 암호화 키를 복호화하여 비교해주고 … Spring-security 암호화 하기 위해서는 Spring-security에서 제공하는 클래스가 필요합니다. 스프링이 제공하는 spring-security모듈을 추가합니다. org.springframework.security spring-security-web $.. 기록이 곧 자산이 되는 세상에서 웹 개발을 공부하는 블로그 입니다.
처음 접하는 누군가 에게 설명할 때 상대방을 이해 시킬 수 있을 정도가 되어야 스스로도 이해가 된 것이며, 그때 비로서 내 것이 된 것입니다. 제대로 공부하기 위해서는 결코 자기 자신에게 관대하지 마시기 바랍니다. - Table of Contents:
Spring-security
BCryptPasswordEncoder
티스토리툴바
Bcrypt-Generator.com – Generate, Check, Hash, Decode Bcrypt Strings
- Article author: bcrypt-generator.com
- Reviews from users: 13137 Ratings
- Top rated: 4.7
- Lowest rated: 1
- Summary of article content: Articles about Bcrypt-Generator.com – Generate, Check, Hash, Decode Bcrypt Strings Decrypt. Test your Bcrypt hash against some plaintext, to see if they match. …
- Most searched keywords: Whether you are looking for Bcrypt-Generator.com – Generate, Check, Hash, Decode Bcrypt Strings Decrypt. Test your Bcrypt hash against some plaintext, to see if they match. Bcrypt-Generator.com – Online Bcrypt Hash Generator & CheckerBcrypt-Generator.com is a online tool to check Bcrypt hashes. You can also use it to generate new Bcrypt hashes for your other applications that require a Bcrypt encrypted string or password
- Table of Contents:
Encrypt
Decrypt
[NODE] 📚 bcrypt 모듈 암호화 원리 & 사용법
- Article author: inpa.tistory.com
- Reviews from users: 18626 Ratings
- Top rated: 4.1
- Lowest rated: 1
- Summary of article content: Articles about [NODE] 📚 bcrypt 모듈 암호화 원리 & 사용법 SHA-2(Secure Hash Algorithm 2); PBKDF2; Bcrypt; Scrypt. 왜 Bcrypt가 추천되어 … 단방향은 암호화할 수는 있어도 복호화해서 원래의 비밀번호 … …
- Most searched keywords: Whether you are looking for [NODE] 📚 bcrypt 모듈 암호화 원리 & 사용법 SHA-2(Secure Hash Algorithm 2); PBKDF2; Bcrypt; Scrypt. 왜 Bcrypt가 추천되어 … 단방향은 암호화할 수는 있어도 복호화해서 원래의 비밀번호 … 암호화 종류 SHA-2(Secure Hash Algorithm 2) 미국 NSA에서 설계한 암호화 해시 함수. digest size는 224, 256, 512 bit로 해시함수로 구성되어졌음. GPU를 이용한 연산속도가 매우 빠르기 때문에 password 암호..
- Table of Contents:
암호화 종류
Bcrypt 모듈 사용법
Crypto 모듈 사용법
방문해 주셔서 감사드립니다
공지사항
최근 댓글 new
최근 글 new
인기 글 hot
티스토리툴바
Springboot에서 BCrypt 암호화(해시화) 구현하기 feat. 시큐리티 인증 없이 BCrypt 사용하기
- Article author: bbubbush.tistory.com
- Reviews from users: 16770 Ratings
- Top rated: 4.2
- Lowest rated: 1
- Summary of article content: Articles about Springboot에서 BCrypt 암호화(해시화) 구현하기 feat. 시큐리티 인증 없이 BCrypt 사용하기 BCrypt 알고리즘은 SHA 알고리즘과 마찬가지로 복호화 불가능하기 때문에 단반향 알고리즘이다. 현재 사용되는 해시 알고리즘 중 가장 강력한 암호화 방식 … …
- Most searched keywords: Whether you are looking for Springboot에서 BCrypt 암호화(해시화) 구현하기 feat. 시큐리티 인증 없이 BCrypt 사용하기 BCrypt 알고리즘은 SHA 알고리즘과 마찬가지로 복호화 불가능하기 때문에 단반향 알고리즘이다. 현재 사용되는 해시 알고리즘 중 가장 강력한 암호화 방식 … 들어가며 스프링 시큐리티를 공부하다가 만나게 된 BCrypt 알고리즘은 어떤 특징이 있나 살펴보기 위해 포스팅을 작성했다. 또한 예전에 기술면접에서 BCrypt에 대해 잘못된 대답을 했던 부끄러운 기억이 생각나서..모두에 컴에서도 되길 바랍니다 : )
- Table of Contents:
Springboot에서 BCrypt 암호화(해시화) 구현하기 feat 시큐리티 인증 없이 BCrypt 사용하기
들어가며
BCrypt 암호화란
코드로 만들어보기
마치며
#7. Bcrypt 로 비밀번호 암호화 하기
- Article author: yerinko.tistory.com
- Reviews from users: 42049 Ratings
- Top rated: 4.8
- Lowest rated: 1
- Summary of article content: Articles about #7. Bcrypt 로 비밀번호 암호화 하기 그렇기떄문에 Bcrypt ( 비크립트 ) 를 이용하여 password를 암호화 하여 데이터 베이스에 저장해줘야 한다. * bcrypt는 단방향 암호화이기 때문에 복호화 … …
- Most searched keywords: Whether you are looking for #7. Bcrypt 로 비밀번호 암호화 하기 그렇기떄문에 Bcrypt ( 비크립트 ) 를 이용하여 password를 암호화 하여 데이터 베이스에 저장해줘야 한다. * bcrypt는 단방향 암호화이기 때문에 복호화 … Bcrypt (비크립트) ? 회원가입 시 비밀번호 문자열을 그대로 DB에 저장하는 것은 굉장히 위험하고 안전하지 않다. 그렇기떄문에 Bcrypt ( 비크립트 ) 를 이용하여 password를 암호화 하여 데이터 베이스에 저장해..
- Table of Contents:
Bcrypt (비크립트)
설치 ⚙️
Bcrypt 로 비밀번호 암호화하는 순서 🧏🏻♀️
Basic example
Example with MongoDB
태그
관련글
댓글0
공지사항
전체 방문자
[Node.js] bcrypt로 비밀번호를 보호하자
- Article author: choice91.tistory.com
- Reviews from users: 4962 Ratings
- Top rated: 3.3
- Lowest rated: 1
- Summary of article content: Articles about [Node.js] bcrypt로 비밀번호를 보호하자 (반대의 개념으로 양방향 암호화가 있는데 양방향 암호화는 A를 B로 암호화하고 B를 다시 복호화하여 A를 알아낼 수 있다.). …
- Most searched keywords: Whether you are looking for [Node.js] bcrypt로 비밀번호를 보호하자 (반대의 개념으로 양방향 암호화가 있는데 양방향 암호화는 A를 B로 암호화하고 B를 다시 복호화하여 A를 알아낼 수 있다.). 📌 해시함수란? 해시함수(Hash Function)은 임의의 길이의 데이터를 고정된 길이의 데이터를 매핑하는 함수이다. 출처: 위키백과 해시함수는 단방향 암호화라고도 한다. 단방향 암호화란 A가 해시함수를 거쳐 B가..
- Table of Contents:
📌 해시함수란
📌 bcrypt
📌 bcrypt로 비밀번호 암호화하기 – bcyrpthash
📌 bcryptcompare
티스토리툴바
Online tool to generate and check bcrypt hashed passwords.
- Article author: www.devglan.com
- Reviews from users: 32151 Ratings
- Top rated: 3.7
- Lowest rated: 1
- Summary of article content: Articles about Online tool to generate and check bcrypt hashed passwords. Thanks for your comment. Perfect explanation. I will put in the description section. blok lok • 1 year ago. please help me decrypt this … …
- Most searched keywords: Whether you are looking for Online tool to generate and check bcrypt hashed passwords. Thanks for your comment. Perfect explanation. I will put in the description section. blok lok • 1 year ago. please help me decrypt this … Online free tool to generate and compare Bcrypt hashed text and passwords.It uses Bcrypt algorithm internally to encrypt plain text.It also provides way to check hashed password match with plain text.
- Table of Contents:
Online Bcrypt Hash Generator
Online Bcrypt Hashed Matcher
Usage Guide – Bcrypt Online Calculator
Bcrypt Hash Generator & Verifier
- Article author: bcrypt.online
- Reviews from users: 4905 Ratings
- Top rated: 4.9
- Lowest rated: 1
- Summary of article content: Articles about Bcrypt Hash Generator & Verifier Generate Bcrypt password hashes with desired cost option. Verify/Valate existing Bcrypt hashes. …
- Most searched keywords: Whether you are looking for Bcrypt Hash Generator & Verifier Generate Bcrypt password hashes with desired cost option. Verify/Valate existing Bcrypt hashes. Generate Bcrypt password hashes with desired cost option. Verify/Validate existing Bcrypt hashes.
- Table of Contents:
Generate password hashes with bcrypt algorithm
Bcrypt Hash Generator
What is Bcrypt
Bcrypt Hash Verifier
Frequently Asked Questions
Resources Articles and Tutorials
Bcrypt Libraries (Bcrypt PHP Bcrypt Java Bcrypt NodeJs)
Notes
See more articles in the same category here: https://chewathai27.com/to/blog.
[ BCrypt ] Spring-security 비밀번호 암호화, 복호화 로직 활용
728×90
반응형
Spring-security
암호화 하기 위해서는 Spring-security에서 제공하는 클래스가 필요합니다.
스프링이 제공하는 spring-security모듈을 추가합니다.
org.springframework.security spring-security-web ${org.springframework-version} Spring-security 라이브러리를 pom.xml에 추가하고 빌딩,업데이트를 완료합니다.
BCryptPasswordEncoder
비밀번호 암호화
본격적으로 암호화를 하기 위해서는 Spring-security에서 제공하는 클래스가 필요합니다.
BCryptPasswordEncoder 클래스입니다.
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); String securePw = encoder.encode(암호화 할 비밀번호);
BCryptPasswordEncoder 클래스 객체를 생성하고 객체를 통해 .encode() 메서드를 호출하여 비밀번호를 매개값으로 넣어준 뒤 인코딩합니다.
인코딩된 값을 String타입으로 저장해줍니다. encode()메서드는 반환타입이 String입니다.
@Autowired private IUserMapper mapper; @Override public void register(UserVO user) { /*회원 비밀번호를 암호화 인코딩*/ BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); /*비밀번호 암호화하여 다시 user객체에 저장.*/ String securePw = encoder.encode(user.getPassword()); user.setPassword(securePw); //DB에 넘겨주기위해 암호화 된 비밀번호를 user 객체에 저장 mapper.register(user); }
회원 가입을 할 때 비밀번호 암호화 과정은 컨트롤러로부터 DAO역할을 해주는 Mapper 인터페이스로 넘어가기 전 중간단계인 Service단에서 로직을 추가하여 비밀번호 암호화를 중간에서 가공하여 진행해 줍니다.
이렇게되면 DB에 암호화되어 비밀번호가 저장이됩니다.
비밀번호 복호화
DB에 저장되는 암호키와 로그인 혹은 입력 수정 삭제 작업 요청을할때 입력한 비밀번호를 똑같은 형태로 암호화하여
암호화된 두 값을 비교하여 일치하면 로그인을 성공시켜 주지만 그것은 HashCode를 사용하여 비교할때이며
Spring Security에서는 이 방법이 먹히지 않습니다.
Spring Security는 매번 랜덤키를 부여하기때문에 따로 디코딩작업을 추가해야합니다.
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); if(encoder.matches(입력받은 비교할 비밀번호, 이미 암호화된 비밀번호) {
matches()라는 메서드를 사용하여 입력받은 비밀번호를 굳이 다시 암호화 하지 않고
내부적으로 이미 저장되있는 security방식의 암호화 키를 복호화하여 비교해주고 일치하면 true
일치하지않다면 false를 때려 확인 결과를 논리값으로 반환해 줍니다.
String inputId = inputInfo.getAccount(); //JSP로부터 넘겨받은 입력한 비밀번호 UserVO user = service.selectOne(inputId); //id를 기준으로 정보를 불러와서 user객체에 담음 BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); if(encoder.matches(inputPw, user.getPassword())) {//넘겨받은 비밀번호와 user객체에 암호화된 비밀번호와 비교
728×90
반응형
[NODE] 📚 bcrypt 모듈 암호화 원리 & 사용법
암호화 종류
SHA-2(Secure Hash Algorithm 2)
미국 NSA에서 설계한 암호화 해시 함수.
digest size는 224, 256, 512 bit로 해시함수로 구성되어졌음.
GPU를 이용한 연산속도가 매우 빠르기 때문에 password 암호화에 권장되지 않음 GPU 연산속도가 빠를수록 공격자의 하드웨어를 통한 오프라인 brute force에 더 취약 하다. 빠른 해시를 사용하여 암호화를 진행시 공격자는 오프라인 공격으로 초당 수십억개의 해시를 계산할 수 있다.
PBKDF2
pbkdf2_hmac(해시함수(sha256..), password, salt, iteration, DLen)
해시함수의 컨테이너 역할을 한다.
검증된 해시함수만을 사용한다.
해시함수와 salt를 적용 후 해시 함수의 반복횟수를 지정하여 암호화할 수 있다.
가장 많이 사용되는 함수. ISO 표준에 적합하며 NIST에서 승인된 알고리즘이다.
Bcrypt
bcrypt.hashpw(password, bcrypt.gensalt())
1999년에 publish된 password-hashing function이다.
Blowfish 암호를 기반으로 설계된 암호화 함수이며 현재까지 사용중인 가장 강력한 해시 메커니즘 중 하나이다.
중 하나이다. 보안에 집착하기로 유명한 OpenBSD에서 사용하고 있다.
.NET 및 Java를 포함한 많은 플랫폼,언어에서 사용할 수 있다.
반복횟수를 늘려 연산속도를 늦출 수 있으므로 연산 능력이 증가하더라도 brute-forece 공격에 대비할 수 있다.
Scrypt
hashlib.scrypt(password, *, salt, n, r, p, maxmem=0, dklen=64)
2009년에 publish된 key derivation function이다.
오프라인 brute forece 공격에 대해 더 강력하지만, 많은 메모리와 CPU를 사용한다.
OpenSSL 1.1 이상을 제공하는 시스템에서만 작동한다.
여러 언어의 라이브러리로 제공된다.
다른 암호기반 KDF에 비해 많은 양의 메모리를 사용하도록 설계되었다.
하드웨어 구현을 하는데 크기와 비용이 훨씬 더 비싸기 때문에, 주어진 자원에서 공격자가 사용할 수 있는 병렬처리의 양이 한정적이다.
왜 Bcrypt가 추천되어질까?
bcrypt가 정답은 아니다. 또한 SHA 종류가 무조건 나쁘다고 하는 것은 아니다.
그러나 많은 보안관련 글들에서 SHA를 암호해싱에 사용하는 암호화 함수들은 GPU를 이용한 공격에 취약하며 (SHA family는 연산속도가 매우빠르기 떄문) 많은 메모리를 필요로 하지 않는 점을 문제로 지적하고있다.
SHA가 보안에 결함이 있어서 안전하지 않기 때문이 아니라,
SHA는 일반적으로 GPU연산에 유리한 32비트 논리 및 산술 연산만 사용하기 때문에, 공격자가 빠른연산으로 공격할 수 있기 때문이라는 것이다.
그로인해 Bcrypt 설계자들은 이런 문제로 SHA가 아닌 Blowfish를 이용하여 구현하였다.
이상적으로 봤을때 limit가 없는 연산 능력을 가진 공격자는 모든 종류의 암호화 알고리즘을 해독 할 수 있겠지만, 이는 어디까지나 이론적인 상황이지 실제로 공격자는 컴퓨터자원을 무제한으로 보유하지 않기 때문에, 공격자의 속도를 늦출 수록 암호화 해독이 어려워진다.
어떤 암호화 함수(bcrypt, pbkdf2, scrypt, ..)를 쓰던 강력하지만, 충분한 시도 횟수, work-factor가 존재한다고 가정할 때, 방어자는 좀 더 느리게 설계된 암호화 방식에 의존하는 것이 낫다고 생각된다.
암호화 사용 정리
ISO-27001 보안 규정을 준수해야하는 상황이면 PBKDF2 를 사용하자.
를 사용하자. 일반적으로 규정을 준수해야할 상황이 아니면 구현이 쉽고 비교적 강력한 Bcrypt 를 사용하자.
를 사용하자. 보안 시스템을 구현하는데 많은 비용을 투자할 수 있다면, Scrpyt를 사용하자.
Bcrypt 모듈 사용법
bcrypt 설치
> npm install bcrypt
비밀번호 암호화하기
const bcrypt = require(‘bcrypt’); const PW = ‘abcd1234’ const salt = 12; // hash 비동기콜백 bcrypt.hash(PW, salt, (err, encryptedPW) => { }) // hashSync 동기 const hash = bcrypt.hashSync(PW, salt); // async/await 사용 const hash = await bcrypt.hash(PW, salt)
hash는 동기, hashSync는 비동기 방식 파라미터로 넣은 숫자 12은 암호화에 사용되는 Salt로, 값이 높을 수록 암호화 연산이 증가.
하지만 암호화하는데 속도가 느려진다.
비밀번호 검증하기
const PW = ‘abcd1234’; const hash = bcrypt.hashSync(PW, 12); // 비동기 콜백 bcrypt.compare(PW , hash, (err, same) => { console.log(same); //=> true }) // 동기 const match = bcrypt.compareSync(PW, hash); if(match) { //login } // async/await const match = await bcrypt.compare(PW , hash) if(match) { //login }
Crypto 모듈 사용법
Reference
https://velog.io/@kylexid/%EC%99%9C-bcrypt-%EC%95%94%ED%98%B8%ED%99%94-%EB%B0%A9%EC%8B%9D%EC%9D%B4-%EC%B6%94%EC%B2%9C%EB%90%98%EC%96%B4%EC%A7%88%EA%B9%8C
Springboot에서 BCrypt 암호화(해시화) 구현하기 feat. 시큐리티 인증 없이 BCrypt 사용하기
반응형
들어가며
스프링 시큐리티를 공부하다가 만나게 된 BCrypt 알고리즘은 어떤 특징이 있나 살펴보기 위해 포스팅을 작성했다.
또한 예전에 기술면접에서 BCrypt에 대해 잘못된 대답을 했던 부끄러운 기억이 생각나서 ‘언젠가는 잘못 대답했던 내용을 만회하기 위해 정리해서 글을 써야지’ 했던 다짐을 실천하는 이유도 있다.
그럼 BCrypt 방식에 대해 알아보고 어떻게 코드를 작성할 수 있는지 확인해보자.
BCrypt 암호화란?
암호화 방식은 아래와 같이 구분할 수 있다.
암호화 방식의 분류
먼저 복호화가 가능한지에 따라 양방향 / 단방향 으로 구분되고,
복호화할 때 사용하는 비밀키가 암호화할 때 그대로 사용되면 대칭키 , 서로 다른 키를 사용하면 비대칭키 가 된다.
BCrypt 알고리즘은 SHA 알고리즘과 마찬가지로 복호화 불가능하기 때문에 단반향 알고리즘이다.
현재 사용되는 해시 알고리즘 중 가장 강력한 암호화 방식이다. 따라서 Spring security에서 채택하고 사용한다. 추가적으로 2^4~2^31 회의 반복 횟수를 설정할 수 있어서 처리되는 시간을 임의로 늘릴 수 있다. 이로 인해 무차별적인 대입을 통한 해킹 방식을 방어할 수도 있다.
컴퓨팅 성능이 늘어나도 반복하는 횟수를 늘림으로서 대처가 가능하므로 지속적으로 사용하기 좋은 암호화 방식이다.
참고로 BCrypt 알고리즘은 SHA 알고리즘과 다르게 동일한 평문도 매번 다른 해시값 으로 나타나므로 단순하게 비교하는 방식으로는 값의 동등성을 확인할 수 없다.
반응형
코드로 만들어보기
우선 Spring boot + Spring security가 필요하다. maven이나 gradle을 통해 준비하면 된다. 필자는 gradle을 통해 준비했다.
build.gradle
… 생략 dependencies { implementation ‘org.springframework.boot:spring-boot-starter-security’ } … 생략
다음은 스프링부트를 시작하는 *Application.java 파일을 찾아가 SecurityAutoConfiguration을 exclude 한다. 기본적으로 시큐리티가 적용되면 인증/인가를 사용하게 된다. 우리는 단순하게 BCrypt 암호화를 위해 적용하였으니 시큐리티의 기능은 꺼두겠다.
*Application.java
@SpringBootApplication(exclude = SecurityAutoConfiguration.class) public class BCryptApplication { public static void main(String[] args) { SpringApplication.run(BCryptApplication.class, args); } }
다음은 암호화하는 서비스 메서드를 만든다. BCryptPasswordEncoder를 빈으로 등록하지 않은 이유는 반복횟수를 설정하는 방법이 생성자를 사용하는 방법뿐이기 때문이다. 그래서 아래 방법은 사용자의 요청에 따라 반복횟수를 4~12까지 설정할 수 있는 기능을 제공한다. (설정하지 않으면 기본적으로 10으로 세팅한다)
BCryptService.java
public String encodeBcrypt(String planeText, int strength) { return new BCryptPasswordEncoder(strength).encode(planeText); }
반복횟수를 10번으로 “Hello, world”를 암호화하니 아래와 같은 값이 나왔다. 자세히 보면 몇 번 반복했는지 반복 횟수가 해시값 안에 적혀있다.
$2a$10$PDWPOmb3KGyKG1GpL78LH.0FGb3iayOEB3iqjRxuEM/qL0yzSQUdS
BCrypt 값 비교하기
마지막으로 BCrypt 해시값과 입력받은 평문이 서로 일치하는지 어떻게 확인하는지 살펴보겠다. 앞서 이야기한 것과 같이 BCrypt는 매번 해시값이 달라진다. 그래서 BCryptPasswordEncoder의 도움을 받아야 한다.
public boolean matchesBcrypt(String planeText, String hashValue, int strength) { BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(strength); return passwordEncoder.matches(planeText, hashValue); }
matches()를 사용할 때는 첫 번째 파라미터로 평문의 텍스트, 두 번째 파라미터로 인코딩 값을 사용해야 한다. 실수하기 좋은 부분이니 기억해두면 좋다.
마치며
암호화 방식을 처음 접하는 개발자도 쉽게 읽을 수 있도록 개념과 코드를 간략하게 작성했다. 보통은 반복 횟수를 정해놓고 사용하기 때문에 위 코드처럼 매번 객체를 생성하지 않고 빈으로 등록하면 더 간단하게 작성할 수 있다.
자세한 소스코드를 참고하고 싶다면 아래 github 주소에서 볼 수 있다.
https://github.com/bbubbush/bb-encryption-api
읽어보면 좋은 글 : https://velog.io/@kylexid/왜-bcrypt-암호화-방식이-추천되어질까
반응형
So you have finished reading the bcrypt 복호화 topic article, if you find this article useful, please share it. Thank you very much. See more: Bcrypt 복호화 사이트, Bcrypt 암호화 사이트, Node JS bcrypt 복호화, Bcrypt matches, Java BCrypt 복호화, Spring 암호화 복호화, Bcrypt 원리, Bcrypt 사용법