반응형

분류 전체보기 428

Java AES-256 양방향 암호화 제대로 알고 사용하기

'Java 양방향 암호화 AES-256 제대로 알고 사용하기' /* 프로젝트에서 양방향 암호화를 하기 위해서 AES-256 코드를 구글링 하여 사용하였는데, 나중에 알고 보니 사용하던 것이 AES-256이 아닌 AES-128인 경우가 있었습니다. 코드를 가져와서 사용하더라도 기본적인 원리는 알고 사용해야겠다는 생각에 AES-256 암호화를 정리하게 되었습니다. */ 본격적인 시작에 앞서 단방향 암호화 알고리즘과 양방향 암호화 알고리즘의 차이점에 대해서 간단하게 알아보겠습니다. 먼저 단방향 암호화는 평문을 암호화 했을 때 다시 평문으로 되돌리는 것(복호화)을 할 수 없는 암호화 방식으로 패스워드 암호화에 사용되며 대표적으로 'SHA-256'이 있습니다. 양방향 암호화는 평문에서 암호문으로, 암호문에서 평문..

Programming/Java 2021.12.15

Java 직렬화, 역직렬화 방법 Serializable interface

'자바 직렬화(Serialization)와 역직렬화(Deserialization)' 자바 시스템 내부에서 사용되는 객체(Object) 또는 데이터(Data)를 외부 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터를 변환하는 기술을 '직렬화(Serialization)'라고 합니다. 반대로 바이트로 변환된 데이터를 원래대로 객체(Object)나 데이터(Data)로 변환하는 기술을 '역직렬화(Deserialization)'라고 합니다. 시스템적으로 본다면 JVM(Java Virtual Machine 이하 JVM)의 메모리에 상주(힙 또는 스택)되어 있는 객체 데이터를 바이트 형태로 변환하는 기술이 '직렬화'이며, 직렬화된 바이트 형태의 데이터를 객체로 변환해서 JVM에 상주시키는 것을 '역..

Programming/Java 2021.12.13

Apache Log4j2 치명적 취약점, 해결방안은? CVE-2021-44228

Log4j2 치명적 취약점 'CVE-2021-44228' Log4j2는 아파치 소프트웨어 재단에서 자바(Java) 언어로 제작된 로깅 라이브러리로, 서버와 프로그램의 유지 관리를 목적으로 동작 상태를 기록으로 남기기 위해서 사용되는 기능입니다. 이번에 발견된 'CVE-2021-44228', Log4Shell 혹은 LogJam으로 명명된 취약점은 '마인크래프트'에서 처음 확인되었고, 자바(Java) 언어로 개발된 마인크래프트 버전에서 프로그래밍 코드로 이루어진 특정 채팅 메시지를 입력하면 대상 컴퓨터에서 원격으로 프로그램을 실행시킬 수 있는 것으로 나타났습니다. 이는 Log4j2 중에 존재하는 'JNDI(Java Naming and Directory Interface)' 인젝션 취약점을 악용한 것으로, 이..

Programming/Web 2021.12.12

자바 Java 상속, 부모 클래스와 자식 클래스(extends, super)

'Java 상속 (Inheritance)' Inheritance is the process by which a new class is created from another class. [자식 클래스] extends [부모 클래스] [하위 클래스] extends [상위 클래스] [파생된 클래스] extends [기반 클래스] [새로 작성하고자 하는 클래스] extends [상속 받고자하는 클래스] 자바에서 상속(Inheritance)이라는 개념은 부모 클래스(상위 클래스)와 자식 클래스(하위 클래스)의 관계에서 발생하며, '자식 클래스가 부모 클래스를 상속받는다.'라고 표현합니다. 상속을 받은 자식 클래스는 부모 클래스에 선언되어 있는 private 접근 제한을 갖는 필드와 메소드를메서드를 제외한 publ..

Programming/Java 2021.12.11

Querydsl DTO 조회하는 방법(Projection, @QueryProjection)

Projection 연산이란, - 한 Relation의 Attribute들의 부분 집합을 구성하는 연산자입니다. - 결과로 생성되는 Relation은 스키마에 명시된 Attribute들만 가집니다. - 결과 Relation은 기본 키가 아닌 Attribute에 대해서만 중복된 tuple들이 존재할 수 있습니다. => 쉽게 Projection이란, '테이블에서 원하는 컬럼만 뽑아서 조회하는 것'이라고 할 수 있습니다. * Relation 데이터를 원자 값으로 갖는 이차원 테이블 * Column = Attribute (프로젝션 대상이 하나일 때는 그 대상의 타입으로 반환되지만, 프로젝션 대상이 둘 이상일 때는 Tuple 또는 DTO로 변환할 수 있습니다.) Querydsl DTO로 조회하는 방법(Projec..

Linux 리눅스 파일 권한에 대한 이해와 권한 변경(chmod)

'다중 사용자 운영체제에서 권한이 필요한 이유' 주로 개인이 일반적으로 사용하는 '단일 사용자 운영체제'(Single-User Operation System, 대표적으로 Windows)와는 다르게 여러 사용자들에게 서비스를 제공해주는 서버에는 '다중 사용자 운영체제'(Multi-User Operation System)가 사용됩니다. 다중 사용자 운영체제의 대표적인 것이 유닉스(Unix) 운영체제와 유닉스에서 파생된 리눅스(Linux) 운영체제이며, 다중 사용자 운영제체는 여러 클라이언트 컴퓨터에서 하나의 서버 컴퓨터에 접속을 하는데 사용되기 때문에 파일 및 디렉터리의 접근 권한을 클라이언트 계정별로 엄격하게 관리되어야 한다는 특징이 있습니다. * 리눅스에서 디렉토리는 그 디렉터리가 포함하는 파일과 하위 ..

Programming/Linux 2021.12.09

Querydsl 개념 및 Gradle 환경설정 (gradle-7.x.x)

- Querydsl 개념 및 Gradle 환경설정 QUser user = QUser.user; List result = queryFactory .select(user) .from(user) .where(user.name.eq("Jan")) .fetch(); // SELECT * FROM user WHERE user.name = 'Jan' 'Querydsl 이란?' Querydsl은 HQL(Hibernate Query Language) 쿼리를 타입에 맞게 안전하게 생성 및 관리할 수 있게 해주는 프레임워크입니다. 쉽게 자바 코드를 기반으로 SQL 쿼리를 작성해준다고도 이야기할 수 있습니다. Querydsl을 사용하는 이유는 무엇일까요? SQL은 문자이기 때문에 type-check가 불가능하고, 실행해보기 ..

Java Optional Class 기본적인 이해

java.util.Optional (Java8부터 도입) Optional is primarily intended for use as a method return type where there is a clear need to represent "no result" and where using null is likely to cause errors. A variable whose type is Optional should never itself be null. it should always point to an Optional instance. (Java SE 9 & JDK 9 / Optional API Note 참조) 옵셔널은 주로 "결과 없음"을 나타낼 필요가 분명하고 null을 사용하면 오류가 발생할..

Programming/Java 2021.12.06

Java 조건문 - if문과 switch문의 핵심

'if문과 switch문의 핵심' if문 조건식과 문장을 포함하는 블럭'{ }'으로 구성되어 있습니다. 조건식의 연산 결과에 따라서 실행할 문장이 달라지기 때문에 프로그램의 실행 흐름을 변경할 수 있습니다. -1 블럭 내의 문장이 하나뿐일 경우 괄호 '{ }'를 생략할 수 있지만 생략하지 않고 쓰는 것이 좋습니다. 이유는 나중에 새로운 문장들이 추가되면 다시 '{ }' 괄호로 문장들을 감싸줘야 하는데, 이때 괄호를 추가하는 것을 잊어버리기 쉽기 때문입니다. -2 위 이미지의 왼쪽의 코드와 같이 상반된 관계에 있는 조건식을 'if - else' 문으로 바꿨을 때의 장점은 '하나의 조건식만 계산하면 된다'는 것입니다. -3 'if - else if - else' 문에서 마지막 'else' 블럭은 생략할 수 ..

Programming/Java 2021.12.06

mac 로블록스(Roblox) 설치 방법 및 실행

'로블록스 ROBLOX' '로블록스'는 게임계의 유튜브라고 불릴 만큼 세계적으로 크게 유행하고 있는 게임 플랫폼입니다. 'ROBLOX'는 사용자가 자체 게임 엔진인 '로블록스 스튜디오(Roblox Studio)'를 사용하여 자신만의 게임을 프로그래밍하고, 다른 사용자가 만든 게임을 즐길 수 있는 온라인 게임 플랫폼 및 게임 제작 시스템입니다. 2021년 5월 기준 570만 명의 최대 동시 접속자를 달성하였고, 월 1억 6400만 명 이상의 활성 사용자를 보유 중인 플랫폼입니다. ('Lua'라는 프로그래밍 언어로 코딩) 'mac에서 5분 만에 로블록스 설치 후 실행 방법' https://www.roblox.com/download (다운로드 링크) 로블록스 사이트에서 다운로드를 먼저 진행합니다. 다운로드가 ..

IT Info 2021.12.05
반응형