개발자

비밀번호 암호화 할때 복호화가능한 방법 (이전 비밀번호 내용 저장or양방향암호화)

2023년 02월 13일조회 636

안녕하세요 2달차 신입 자바개발자입니다. 현재 spring boot로 거래소 api를 만들려고 하는데, 비밀번호 암호화에 대해 궁금한 점이 있습니다. JWT+PasswordEncoder를 통해서 비밀번호 암호화해서 db에 저장하는데 복호화가 불가능한 상황입니다. 그런데 기획 상으로 '비밀번호 재설정 유의사항 1. 이전 *회 동안 사용한 비밀번호는 사용 금지' 2. 생일, 전화번호 등 추측하기 쉬운 번호 금지' 라고 되어있는데, 사용자가 지정한 비밀번호를 알아야 기록을 남길 텐데 어떤 프레임워크나 스택을 써야할지 모르겠습니다. 노드 코인 주소를 저장할때도 암호화해서 저장했다가 내보낼때는 복호화해서 내보내야 한다고 하는데 비슷한 기능을 사용하면 될 것같은데 혹시 어떤 기능을 써야할지 추천 부탁드리면 너무 감사드리겠습니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

인기 답변

호빵님의 프로필 사진

암호화 방법중에 단방향,양방향 암호화가 있습니다 단방향은 원문으로 복호화가 불가능한 케이스입니다. 양방향 암호화는 비밀번호를 db에 저장하는 용도로 적합하지 않구요. 검색해보니 사용하신 passwordEncoding은 단방향 암호화인것 같고 말씀하신 로직은 아마도 DB에 "이전 비밀번호" 컬럼을 n개 더 만들어두어서 저장해두었다가 비교하는 식으로 구현이 가능할것 같습니다. 비교할때 db에 있는 값을 복호화해서 비교하는것이 아니라 화면에서 받은 값을 암호화 한후 metches 함수로 비교하셔야 합니다. 생일이나 그런 로직은 보통 화면 - was 구간은 양방향 암호화로 구성후 was에서 복호화 후 다시 was - db 단방향 암호화 이런식으로 구현하는데 was에서 복호화 후 생일이나 기타 로직 확인하면 될 것 같습니다. 화면 - was 암호화는 RSA 암호화 사용하시면 될 것 같습니다.

류호준님의 프로필 사진

꼭 복호화가 필요하다면 복호화가 가능한 키를 만들어서 안전한 KeyVault에다가 저장하시는 방법이 있습니다만 위에 말씀하신 사례는 복호화 하지 않아도 충분히 가능 할 것 같습니다. 추측하기 쉬운 번호는 비밀번호 생성당시에 받은 암호화 되지 않은 비밀번호로 검사를 진행하시면 될 것 같고 *회동안 사용한 비밀번호같은 경우에는 인코딩된 String을 직접 매칭해보시면 됩니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!