분류 전체보기316 블록 암호화 기법 종류 ECB (Electronic Code Book) 평문을 일정한 블록 단위로 나누어 순차적으로 암호화하는 구조로 가장 단순한 기법 동일한 평문 블록에 대해 동일한 암호문 블록이 생성 각각의 블록은 서로 독립적이며 한 개의 블록만 해독되어도 나머지 블록도 해독되기 때문에 보안상 매우 취약함 CBC (Cipher Block Chaining) 평문을 일정한 블록 단위를 나누어 이전 암호문 블록을 암호화하여 평문 블록과 XOR 연산을 수행하여 새로운 암호문 블록을 생성함 → 가장 강력한 암호화 모드로 여겨짐 최초 키의 생성 버퍼로 IV(초기화 벡터)를 사용하며 첫 번째 블록과 XOR 연산을 통해 암호화를 진행함 각각의 블록이 서로 독립적이지만 ECB와 다르게 동일한 평문 블록에 대해 동일한 암호문 블록이 생성되지.. 2024. 3. 18. 암호화 알고리즘 종류 대칭 알고리즘 DES (Data Encryption Standard, 데이터 암호화 표준) 1970년대에 IBM에서 개발한 AES 도입 이전까지의 표준 대칭 키 암호화 알고리즘 블록 크기가 64 bit (8 byte), 키 크기가 56 bit (7byte)로 고정 작동 원리 = 암호화할 데이터를 블록으로 나눈 후 각 블록 내의 데이터의 일련의 수학적 연산을 적용하여 작동 현재는 IT기술의 발전으로 안전성이 보장되지 않아 사용이 지양됨 3DES (Triple DES) DES를 3번 반복하는 방식의 대칭 키 암호화 알고리즘 DES와 마찬가지로 블록 크기가 64 bit (8 byte), 키 크기가 56 bit (7byte)로 고정 암호화를 3번 실행하기 때문에 속도가 느리고 DES의 사실상 퇴출로 사용이 지양.. 2024. 3. 18. javax.crypto.Cipher 정의 Java에서의 암호화 및 복호화 기능을 제공하며 JCE framework의 핵심을 구성 Java Cryptography Extension(JCE) = Java 보안 기능의 핵심을 담당하는 Java Crpytography Architecture(JCA)의 일부분으로, 애플리케이션에서 데이터 암호화, 복호화 그리고 개인 데이터의 해싱을 제공 암호학에서 원본 = Plaintext, 암호화된 문서 = Ciphertext라 부름 getInstance()에 "알고리즘/모드/패딩" 형식으로 파라미터를 입력해 암호화 방식을 지정하여 인스턴스 생성 지원 알고리즘 종류 대칭 알고리즘 AES (Advanced Encryption Standard) - 가장 일반적 DES (Data Encryption Standard) .. 2024. 3. 18. java.nio.file.Files 정의 - Java에서 파일 및 디렉터리의 경로 및 속성을 조작하는 데 사용되는 클래스 - 파일 시스템의 경로를 나타내며, 파일이나 디렉터리의 생성, 삭제, 검사, 탐색 등의 기본적인 파일 작업을 지원 - java.io.File와 용도가 같으나 더 유연한 작업을 지원하며 파라미터로 경로 입력 시 Path 객체를 사용 - 별도로 인스턴스(객체)를 생성하지 않고 Files.메소드 식으로 사용 주요 메소드 - copy(원본 경로, 복사본 경로) = 파일/디렉터리 복사 - move(이동 전 경로, 이동 후 경로) = 파일/디렉터리 이동 - delete(경로) = 파일/디렉터리 삭제 - createDirectory(경로) = 디렉터리 생성 - createFile(경로) = 파일 생성 - readAllBytes(경로.. 2024. 3. 12. @Pathvariable 슬래시(/) 처리 방법 문제 - 슬래시(/)는 URL에서 구분자로 사용되기 때문에 @PathVariable로 불러오는 파라미터 데이터에서 오류가 발생 - 슬래시(/)를 인코딩(%2f)하여 입력하여도 Spring Boot에서 이를 자동으로 디코딩하기 때문에 인코딩 소용 X ※ 또한, Spring Boot는 //처럼 슬래시(/)가 중첩되어 있는 경우에 이를 합쳐서 단일 슬래시(/)로 인식 해결 방법 - @Pathvariable이 아닌 @RequestParam으로 쿼리 스트링을 이용 - 파라미터를 RequestBody에 담아서 받기 2024. 3. 12. Jasypt (application.properties 암호화) 정의- .properties 파일을 간단히 암호화 및 복호화하여 관리할 수 있도록 하는 Java 라이브러리- .properties 파일에 DB 정보와 같은 보안 정보를 암호화하기 위해 주로 사용- 기본 라이브러리가 아니기 때문에 별도로 import 필요Gradleimplementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.3' 기본 세팅application.propertiesjasypt.encryptor.bean=jasyptEncryptorspring.datasource.password=ENC(jal14ljlkjdaslko2j3c)- application.properties에 ecnryptor bean을 정의- encryptor를 통해 .. 2024. 2. 28. @AllArgsConstructor 지양 이유 및 대책 @AllArgsConstructor의 문제점 - @AllArgsConstructor는 모든 필드를 파라미터로 받아 객체를 생성하기 때문에 일부 필드만 사용하는 경우에 불필요한 의존성을 발생 시킬 수 있음 - @AllArgsConstructor는 정의한 모든 필드를 가진 생성자를 생성해주는데 다음과 같이 같은 타입의 파라미터를 서로 바꿔 입력하였을 경우에도 에러가 발생하지 않는 문제가 발생함 @AllArgsConstructor public class carDto { private String carId; private int carNum; private String carUser; } // new carDto("Tom", 4123, "n1309afc2") 대책 (@Builder) - 원하는 필드를 설정할 .. 2024. 2. 26. 이벤트 종류 마우스 이벤트 - click=요소에 마우스를 클릭했을 때 이벤트가 발생 - dbclick= 요소에 마우스를 더블클릭했을 때 이벤트가 발생 - mouseover= 요소에 마우스를 오버했을 때 이벤트가 발생 - mouseout= 요소에 마우스를 아웃했을 때 이벤트가 발생 - mousedown= 요소에 마우스를 눌렀을 때 이벤트가 발생 - mouseup= 요소에 마우스를 떼었을 때 이벤트가 발생 - mousemove= 요소에 마우스를 움직였을 때 이벤트가 발생 - contextmenu= context menu(마우스 오른쪽 버튼을 눌렀을 때 나오는 메뉴)가 나오기 전에 이벤트 발생 키 이벤트 - keydown= 키를 눌렀을 때 이벤트가 발생 - keyup= 키를 떼었을 때 이벤트가 발생 - keypress= .. 2024. 2. 23. v-on 수식어 이벤트 수식어 .stop - 자식 요소의 이벤트가 부모 요소의 이벤트를 호출하지 않도록 설정 Click .prevent - 페이지 새로고침 방지 ex) 입력창에 무언가를 입력한 다음 전송 버튼을 눌러도 렌더링 X Sign up .self - 자식 요소의 이벤트를 실행해도 부모 요소의 메소드 실행 X - .self를 지정한 부모 요소를 직접 실행해야지만 이벤트가 실행됨 .once - 이벤트를 실행했을 때 해당하는 메소드를 단 한번만 실행되도록 설정 - v-on의 .once가 아닌 v-once로도 적용가능 .capture - 우선순위를 무시하고 가장 먼저 실행 EX) div3 -> div2 -> div1 순서가 정상이지만 div1 -> div3 -> div2 순으로 실행 div1 div2 div3 .pass.. 2024. 2. 23. Sqlite LocalDateTime 적용 문제 문제 MySQL과 다르게 Sqlite는 Spring Data JPA를 통해 LocalDateTime을 적용하여 Entity 혹은 DTO의 필드(컬럼)를 정의하면 날짜 데이터가 아닌 알아보기 힘든 숫자 형식으로 데이터가 DB에 저장됨 해결 방법 LocalDateTime 데이터를 DateTimeFormatter를 이용하여 String으로 변환하여 저장 public class carDTO { @Column(columnDefinition = "text", updatable = false) private String createdDateTime; @Column(columnDefinition = "text") private String modifiedDateTime; @PrePersist protected void.. 2024. 2. 19. SSLHandshakeException: PKIX ~ 인증서 관련 에러 에러 내용 - HTTPS 통신과 관련하여 인증서 문제가 발생했을 경우 나타남 에러 원인 1. 신뢰할 수 없는 CA 인증서 경우 - 새로운 CA로부터 가져온 인증서가 아직 신뢰할 수 없거나 애플리케이션이 CA가 없는 구형 버전에서 실행 중인 경우 - 해결 방법 InputStream에서 특정 CA 가져오기 → CA를 사용하여 keystore 생성 → keystore를 사용하여 TrustManager 생성 → TrustManager를 통해 SSLContext 초기화 → 인증서 확인을 위해 CA를 사용 (TrustManager에서 신뢰할 수 있는 유일한 CA) // Load CAs from an InputStream CertificateFactory cf = CertificateFactory.getInstanc.. 2024. 2. 15. https 통신 방법 (SSL 인증서) 순서 1. SSL 인증서 생성 2. 프로젝트에 SSL 인증서 적용 인증서 생성 1. Keystore 생성 keytool -genkey -alias [keystore 별칭] -keyalg RSA -storetype PKCS12 -keystore [keystore 파일] 2. 생성한 Keystore로부터 인증서 추출 keytool -export -alias [keystore 별칭] -keystore [keystore 파일] -rfc -file [인증서 파일] 3. java 폴더의 lib/security/cacerts에 추출했던 인증서 등록 프로젝트에 인증서 적용 application.properties에 다음 정보 입력 server.ssl.key-store=키스토어 경로 server.ssl.key-store.. 2024. 2. 14. The import org.springframework cannot be resolved 에러 (Gradle) 문제 현상 외부에서 작업하던 Spring Boot(Gradle) 프로젝트를 IDE에서 별다른 import 없이 열었을 경우 해당 에러가 발생 해결 방법 - 수동으로 다시 import Eclipse 해당 프로젝트 폴더 우클릭 - import - Existing Gradle Project - 해당하는 Gradle 프로젝트 폴더 선택 후 완료 Intellij Import Project - 해당 프로젝트 폴더의 buiild.gradle 선택 후 완료 2024. 2. 12. java.io.FileWriter & FileReader FileWriter - 텍스트 파일을 출력(입력)할 때 사용하는 클래스 - 생성자가 파일의 경로 또는 File 객체를 통하여 객체 생성 가능 → 파일 경로 오류 시 IOException 발생 (FileNotFoundException X) 생성자 종류 - FileWriter(String filepath) = 파일 경로로 FileWriter 객체 생성 - FileWriter(File file) = File 객체로 FileWriter 객체 생성 ※ 생성자 파라미터에 boolean append 추가 시 true면 이어쓰기, false면 덮어쓰기 진행 FileReader - 텍스트 파일을 읽을 때 사용하는 클래스 - 생성자가 파일의 경로 또는 File 객체를 통하여 객체 생성 가능 → 파일 경로 오류 시 IOEx.. 2024. 1. 29. Vue 기본 문법 텍스트 보간법 - {{ }}(이중 중괄호) 를 통해 Vue에서 정의한 데이터와 html에서 정의한 데이터를 서로 바인딩하는 방법 HTML 메세지: {{ msg }} JavaScript const app = Vue.createApp({ data() { return { msg: "learn Vue" } } }); app.mount("#user-goal"); 디렉티브(Directive) - DOM 요소에 특별한 속성으로 추가되어 화면의 동적인 동작을 처리하는데 사용되는 명령어 - Vue를 통해 실행되는 모든 내장 디렉티브들은 명칭이 v-로 시작함 - 하나의 요소에 두 개의 디렉티브를 함께 사용 권장 X v-html - HTML 요소에 Vue의 data에서 정의한 변수를 동적 바인딩하여 출력할 때 사용 - XS.. 2024. 1. 23. 이전 1 2 3 4 5 6 ··· 22 다음