반응형
청춘고양이
배움을 기록하는 곳
청춘고양이
전체 방문자
오늘
어제
  • Hello World (119)
    • JQuery (5)
    • In my opinion (4)
    • HTML&CSS (8)
    • JS (9)
    • JAVA (21)
    • Spring Boot (21)
    • Node.js (1)
    • Linux (7)
    • Git (2)
    • Kotlin (4)
    • Fluttor (4)
    • 정보처리기사 (19)
    • AWS (1)
    • Oracle (8)
    • MySQL (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 제이쿼리 비밀번호
  • 객체 안의 함수
  • 청춘고양이
  • 중복 제거 로또
  • js 로또 번호
  • 제이쿼리 버튼클릭시 색 변경
  • css
  • js 패스워드 변경
  • 초보개발
  • 제이쿼리 패스워드 변경
  • js
  • 제이쿼리
  • 자바
  • 스크롤js
  • spring 기본설정
  • ScrollEffectJs
  • 자바db연동
  • 가위바위보js
  • js 비밀번호
  • 쉬프트 연산

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
청춘고양이

배움을 기록하는 곳

CryptoUtils
카테고리 없음

CryptoUtils

2022. 8. 14. 20:38
반응형

1. 비밀번호를 설정할 때 필요한 단방향 암호화 메서드 만들기. 나중에 전역적으로 사용할 수 있기 때문에 utils라는 패키지 생성 -> CryptoUtils라는 클래스 생성

2. CrytoUtils 생성자를 private를 걸어서 접근을 제한함. 잘못된 값이 실수로 들어오는 경우를 막기.

3. 단방향 암호화의 종류는 여러 개가 있으므로 우선 enum으로 만들어 주기.

4. 해싱 과정을 처리할 메서드 만들기.

5. 각각의 경우에 대한 메서드 오버로딩.

public class CryptoUtils {
    public enum Hash {
        MD5("MD5"),
        SHA_256("SHA-256"),
        SHA_512("SHA-512");

        public final String algorithm;

        Hash(String algorithm) {
            this.algorithm = algorithm;
        }
    }

    public static String hash(Hash hash, String input) {
        return CryptoUtils.hash(hash, input, StandardCharsets.UTF_8, null);
    }

    public static String hash(Hash hash, String input, String fallback) {
        return CryptoUtils.hash(hash, input, StandardCharsets.UTF_8, fallback);
    }

    public static String hash(Hash hash, String input, Charset charset) {
        return CryptoUtils.hash(hash, input, charset, null);
    }

    public static String hash(Hash hash, String input, Charset charset, String fallback) {
        try {
            return CryptoUtils.hashUnsafe(hash, input, charset);
        } catch (NoSuchAlgorithmException ignored) {
            return fallback;
        }
    }

    public static String hashUnsafe(Hash hash, String input) throws NoSuchAlgorithmException {
        return CryptoUtils.hashUnsafe(hash, input, StandardCharsets.UTF_8);
    }

    public static String hashUnsafe(Hash hash, String input, Charset charset) throws NoSuchAlgorithmException {
        MessageDigest messageDigest = MessageDigest.getInstance(hash.algorithm);
        messageDigest.reset();
        messageDigest.update(input.getBytes(charset));
        byte[] hashBytes = messageDigest.digest();
        return String.format(String.format("%%0%dx", hashBytes.length), new BigInteger(1, hashBytes));
    }

    private CryptoUtils() {
    }
}

 

 

 

반응형
저작자표시 (새창열림)
    청춘고양이
    청춘고양이
    신입개발자

    티스토리툴바