TIL #42

DuBu·2023년 8월 23일
0

일본IT JAVA 연수과정

목록 보기
60/61
post-thumbnail

암호화(Encryption)

민감한 정보를 보호하기 위해 해당 정보를 무작위로 변환하여 누구나 쉽게 이해할 수 없는 형태로 만드는 과정입니다. 이때 사용되는 특별한 규칙을 "암호" 또는 "키"라고 부릅니다.

복호화(Decryption)

암호화된 정보를 원래의 의미로 돌리는 과정입니다. 이 과정은 암호화된 데이터와 암호화에 사용된 키가 필요합니다.

대칭키

  • 대칭키 암호화는 같은 키로 암호화와 복호화를 수행하는 방식입니다. 암호화와 복호화에 동일한 키를 사용하기 때문에 키 관리가 중요합니다. 대표적인 알고리즘으로는 AES (Advanced Encryption Standard)가 있습니다.

비대칭키

  • 비대칭키 암호화는 공개키와 개인키 두 가지 키를 사용하는 방식입니다. 공개키로 암호화하면 개인키로만 복호화할 수 있고, 개인키로 암호화하면 공개키로만 복호화할 수 있습니다. 주로 인증 및 안전한 키 교환을 위해 사용됩니다. RSA가 가장 잘 알려진 비대칭키 암호화 알고리즘입니다.

hashcode

  • 해시코드는 임의의 크기의 데이터를 고정된 크기의 값으로 변환하는 함수입니다. 같은 입력에 대해서는 항상 같은 해시코드가 생성되며, 두 개의 다른 입력에 대해서는 거의 동일한 해시코드가 생성되는 것이 일반적입니다. 해시 함수는 주로 데이터 무결성 검사나 암호화된 비밀번호 저장 등에 사용됩니다. 대표적인 해시 함수로는 SHA-256, MD5 등이 있습니다.
  • 해시 함수는 복호화가 불가능한 단방향 함수로서, 원래 데이터를 해시 값으로 변환하는 것은 가능하지만 해시 값에서 원래 데이터를 복원하는 것은 매우 어려운 특성을 가지고 있습니다.

Spring Security Encrypt Object

  1. BCryptPasswordEncoder:
    BCryptPasswordEncoder는 사용자의 비밀번호를 안전하게 저장하고 검증하기 위한 암호화 객체입니다. BCrypt 해시 함수를 사용하여 비밀번호를 해시화하고 저장합니다.
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

public class PasswordEncoderExample {
    public static void main(String[] args) {
        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
        String rawPassword = "mysecretpassword";
        String encodedPassword = passwordEncoder.encode(rawPassword);

        System.out.println("Encoded Password: " + encodedPassword);

        boolean passwordMatches = passwordEncoder.matches(rawPassword, encodedPassword);
        System.out.println("Password Matches: " + passwordMatches);
    }
}
  1. MessageDigestPasswordEncoder:
    MessageDigestPasswordEncoder는 다양한 해시 알고리즘을 사용하여 비밀번호를 해시화하는 객체입니다.
import org.springframework.security.crypto.password.MessageDigestPasswordEncoder;

public class PasswordEncoderExample {
    public static void main(String[] args) {
        MessageDigestPasswordEncoder passwordEncoder = new MessageDigestPasswordEncoder("SHA-256");
        String rawPassword = "mysecretpassword";
        String encodedPassword = passwordEncoder.encode(rawPassword);

        System.out.println("Encoded Password: " + encodedPassword);
    }
  1. StandardPasswordEncoder:
    StandardPasswordEncoder는 다양한 해시 알고리즘을 사용하여 비밀번호를 해시화하는 객체입니다. BCrypt 등의 보다 안전한 암호화 방식을 권장하지만, 이전 시스템과의 호환성을 위해 사용될 수 있습니다.
import org.springframework.security.crypto.password.StandardPasswordEncoder;

public class PasswordEncoderExample {
    public static void main(String[] args) {
        StandardPasswordEncoder passwordEncoder = new StandardPasswordEncoder();
        String rawPassword = "mysecretpassword";
        String encodedPassword = passwordEncoder.encode(rawPassword);

        System.out.println("Encoded Password: " + encodedPassword);
    }
}

0개의 댓글