# BCrypt ë¨ë°©í¥ ìí¸í
```
ë¨ë°©í¥ ìí¸íë í쪽 ë°©í¥ì¼ë¡ ìí¸í를 íë¤ë ì미ì´ë¤.
ì¦, ìí¸íë§ ê°ë¥íê³ ë³µí¸íë í ì ìë¤.
ìì를 ë³´ë©´ì ì´í´í´ë³´ì.
```
* ìì
---
1. Entity
```java
@Getter
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity
@Table(name = "users")
public class UsersTable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "rec_key")
private Long recKey;
@Column(name = "user_id")
private String usersId;
@Column(name = "user_password")
private String usersPassword;
@Column(name = "hashed_password") // hash
private String hashedPassword;
@Column(name = "creat_date", nullable = true) // ìì± ë ì§
private LocalDateTime createDate;
@Column(name = "update_date", nullable = true) // ë³ê²½ ë ì§
private LocalDateTime updateDate;
}
```
2. Logic
```java
// ...
private final usersRepository usersRepository; // Repository
public boolean usersLogin(Map
```java
// Select ì íì
private boolean matches(String rawPassword, String hashedPassword) {
PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(10);
return passwordEncoder.matches(rawPassword, hashedPassword);
}
// Insert ì íì
private String hashPassword(String password) {
PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(10);
return passwordEncoder.encode(password);
}
```
```
* ì¬ê¸°ìë ì¡°í를 기ì¤ì¼ë¡ íë¤.
1) users í
ì´ë¸ì ì¡°ê±´ì ì£¼ì´ ì¡°ííë¤.
2) matches() í¨ì를 ì¬ì©íì¬ ì
ë ¥í ë¹ë°ë²í¸ì hash ìí¸íëì´ìë ë¹ë°ë²í¸ë¥¼ ë¹êµíë¤.
```