본문 바로가기
728x90
반응형

Language/Java22

[Java] SHA 암호화 알고리즘 안녕하세요. J4J입니다. 이번 포스팅은 sha 암호화 알고리즘에 대해 적어보는 시간을 가져보려고 합니다. SHA란? sha는 secure hash alogirthm의 약자로 해시를 이용한 암호화 알고리즘입니다. sha는 크게 다음과 같이 나뉩니다. sha-0 sha-1 sha-2 sha-0은 최초로 만들어진 sha함수를 일컫는 말입니다. 그리고 이후로 sha-0을 변형하여 등장한 것이 sha-1입니다. 여기서 또다시 변형이 이루어져 sha-224, sha-256, sha-384, sha-512 등의 암호화 방식이 등장했는데 이들을 sha-2라고 일컫습니다. sha-0과 sha-1은 160비트의 해시값을 만들어내는 방식이고 특히 sha-1은 SSL, TLS, SSH 등의 많은 프로토콜과 프로그램에서 사용.. 2021. 11. 8.
[Java] NodeJS와 매핑되는 AES 암호화 (Feat. React) 안녕하세요. J4J입니다. 이번 포스팅은 자바에서 노드와 매핑되는 aes암호화 방식에에 대해 적어보는 시간을 가져보려고 합니다. AES 암호화 회사에서 업무를 보던 도중 react에서 aes암호화 처리가 된 데이터를 spring에 넘겨주고 spring에서 복호화를 하여 데이터를 확인해야 하는 상황이 생겼었습니다. aes암호화를 하는 방법은 검색을 해봤을 때 정말 여러 가지 방법이 있는 것으로 확인되지만 react는 react에서만, spring은 spring에서만 서로 암복호화가 되었습니다. 문제를 해결하기 위해 여러가지 시도를 해봤고 그중 발견한 방법에 대해 글을 남겨놓으려고 합니다. 우선 aes 암호화 방식은 aes128, aes192, aes256 등의 방식들이 존재하는데 key의 길이가 길어질수록.. 2021. 11. 2.
[Java] URLConnection을 이용한 API 호출 안녕하세요. J4J입니다. 이번 포스팅은 url connection을 이용한 api 호출에 대해 적어보는 시간을 가져보려고 합니다. 최근 회사 업무와 카카오 공채 2차 알고리즘 준비를 하다 보니 자바를 이용하여 rest api를 호출하는 코드를 자주 다루게 되었습니다. 하지만 시간이 지나면 결국에 다시 까먹게 될 것이고 현재 알고 있는 내용을 정리해 보고자 작성하게 되었습니다. 자바에서 rest api를 호출하는 방법은 여러가지가 있는 것으로 보입니다. 그리고 그런 방법들은 어떨지는 모르겠으나 제가 사용하는 방법은 json클래스를 사용하기 위해 jar파일을 등록해야 하기 때문에 jar파일부터 프로젝트에 집어넣어 보도록 하겠습니다. 들어가기에 앞서 아래 내용들은 자바를 위한 내용들입니다. 만약 스프링에 사.. 2021. 10. 2.
[Java] URL을 이용한 파일 업로드 안녕하세요. J4J입니다. 이번 포스팅은 URL을 이용한 파일 업로드에 대해 적어보는 시간을 가져보려고 합니다. 이전에 2021.03.08 - [IT/Java] - [Java] URL을 이용한 이미지 업로드라는 포스팅을 작성한 적이 있는데 이번에 포스팅될 내용은 이미지뿐만 아니라 pptx, jar, txt 등의 다른 파일들도 업로드를 할 수 있습니다. 다른 말로는 이미지 업로드 방식의 상위 버전(?)일 수도 있겠습니다. 적용 방법 업로드 할 타겟 파일을 만들기 위해 텍스트 파일 하나를 첨부해보겠습니다. 위의 파일을 다운로드하는 URL은 https://blog.kakaocdn.net/dn/bhK3bF/btqZ3fko0Nb/GXa1NlyVQzNhT4GYZDeoL1/uploadTestFile.txt?attac.. 2021. 3. 15.
[Java] Jsoup을 이용한 html 파싱 안녕하세요. J4J입니다. 이번 포스팅은 Jsoup을 이용한 html 파싱에 대해 적어보는 시간을 가져보려고 합니다. 파싱이란? 파싱은 한글로 뜻풀이를 해보면 구문 분석이라는 뜻으로 문장을 이루고 있는 구성 성분을 분해하여 구조화하는 것을 의미합니다. 이게 무슨 말이냐? 간단하게 말하면 화면을 만들기 위해 사용되는 html태그 및 정보들을 가져와 새로운 구조를 만든다고 생각하면 됩니다. 그리고 자바에서 html 파싱을 할 수 있도록 도와주는 라이브러리가 Jsoup입니다. html을 파싱하는 이유에는 사람들마다 다른 이유들이 존재하겠지만 저 같은 경우는 보통 웹 페이지에 있는 데이터를 가져와 여러 가지 테스트를 하고 싶을 때 사용합니다. 하지만 웹 페이지에 있는 데이터를 가져올 때 조심해야 될 점은 가져와.. 2021. 3. 9.
[Java] URL을 이용한 이미지 업로드 안녕하세요. J4J입니다. 이번 포스팅은 URL을 이용한 이미지 업로드에 대해 적어보는 시간을 가져보려고 합니다. 만약 본인의 파일을 선택하여 서버에 업로드하는 방법에 대해 알고 싶으시면 다음 포스팅을 참고하시면 됩니다. - 2021/03/04 - [IT/Spring] - [Spring] 파일 업로드 - MultipartFile(With. React) - 2021/03/05 - [IT/Spring] - [Spring] 파일 업로드 - MultipartRequest(With. React) 적용 방법 업로드를 할 타겟 이미지를 만들기 위해 임의로 사진 파일을 등록해보겠습니다. 등록한 위의 이미지의 경로는 https://blog.kakaocdn.net/dn/VIxFi/btqZqqf3QFS/n2otuLtHQo8.. 2021. 3. 8.
[Java] 자바기초 - 컬렉션(Collection) 안녕하세요. J4J입니다. 이번 포스팅은 컬렉션에 대해 적어보는 시간을 가져보려고 합니다. 컬렉션이란? 컬렉션이라고 하는 것은 자바에서 데이터를 유용하게 담기 위해 만들어 둔 인터페이스로 컬렉션 프레임워크라고도 많이 부릅니다. 말 그대로 인터페이스이기 때문에 사용자들이 사용하기 위해서는 인터페이스를 상속받아 정의해 둘 필요가 있었고 정의된 클래스들을 자바에서 제공하여 언제 어디서든 사용할 수 있습니다. ※ 인터페이스에 대해 모르신다면? [Java] 자바기초 - 추상클래스와 인터페이스(abstract/interface) 종류 컬렉션의 종류는 List, Set, Map 총 3가지가 있습니다. 이 3개는 모두 인터페이스이기 때문에 위에 말씀드린 것처럼 해당 인터페이스를 상속받아 구현시켜둔 클래스들이 다양하게 .. 2020. 12. 31.
[Java] 자바기초 - 제네릭(Generic) 안녕하세요. J4J입니다. 이번 포스팅은 제네릭에 대해 적어보는 시간을 가져보려고 합니다. 제네릭이란? 자바로 프로그래밍된 코드들을 보시면 인스턴스를 생성할 때 꺽쇠("")들로 표현된 코드들을 보신 경험이 있을 것인데 이런 코드들이 모두 제네릭이 적용된 코드들입니다. 제네릭이라고 하는 것은 클래스 내부에서 사용될 변수들의 타입을 지정해주는 역할을 수행합니다. 다른 표현으로는 담고 싶은 데이터 타입을 정해 다른 데이터 타입은 담을 수 없도록 해준다 라고 말할 수 있습니다. 제네릭을 일상생활에서 비유하자면 뷔페에 갈 때 이쪽은 한식코너, 저쪽은 양식코너와 같이 분류하는 것이라고 생각하면 됩니다. 제네릭을 사용하는 이유는 원치 않은 데이터 타입을 담을 때 컴파일 과정에서 발견하기 위해 사용됩니다. (코드 작성.. 2020. 12. 28.
[Java] 자바기초 - 객체지향(OOP) - 다형성(Polymorphism) 안녕하세요. J4J입니다. 이번 포스팅은 객체지향 프로그래밍의 특징 중 하나인 다형성에 대해 적어보는 시간을 가져보려고 합니다. 다형성이란? 다형성이라고 하는 것은 다형성이라는 말을 그대로 풀이하여 여러 가지 형태를 가질 수 있는 특성을 의미합니다. 다른 표현으로는 자바에서 하나의 인스턴스를 생성할 때 한 클래스에 대해서만 생성하는 것이 아니라 여러 클래스에 대해 인스턴스를 생성할 수 있다는 것을 말합니다. 무슨 말인지 이해가 되지 않으실 것 같아 바로 코드로 표현해보겠습니다. package oop; public class Animal { String zooName = "J4J Zoo"; public void getZooName() { System.out.println(zooName); } public .. 2020. 12. 27.
[Java] 자바기초 - 객체지향(OOP) - 상속화(Inheritance) 안녕하세요. J4J입니다. 이번 포스팅은 객체지향 프로그래밍의 특징 중 하나인 상속화에 대해 적어보는 시간을 가져보려고 합니다. 상속화란? 자바에서 상속화라고 하는 것은 부모 클래스에 정의된 변수 및 메서드 들을 자식 클래스에서 상속받아 사용할 수 있게 되는 것을 말합니다. 일상 속에서 부모의 재산을 그대로 상속받는다는 것과 유사한 개념이라고 생각하시면 됩니다. 상속화를 사용하는 이유는 무엇일까요? 그 이유는 코드의 재사용성을 극대화시키기 위해서입니다. 상속화를 사용한다면 부모 클래스에서 정의한 변수 및 메서드들을 여러 자식 클래스에서도 사용할 수 있기 때문에 재사용성이 증가하게 되고 더불어 자식 클래스에서는 동일한 코드들을 다시 작성할 필요가 없기 때문에 코드가 간결해지게 됩니다. 또한 사용 중인 메서.. 2020. 12. 26.
[Java] 자바기초 - 객체지향(OOP) - 추상화(Abstraction) 안녕하세요. J4J입니다. 이번 포스팅은 객체지향 프로그래밍의 특징 중 하나인 추상화에 대해 적어보는 시간을 가져보려고 합니다. 추상화란? 추상화라고 하는 것은 목적과 관련이 없는 것을 제거하고 필수적인 요소만을 표현해 둔 것을 말합니다. 예를 들어 초코빵과 크림빵을 만든다고 가정해 보겠습니다. 두 빵을 만들 때 빵 표면을 무엇으로 만들지, 빵 속을 무엇으로 채울지에 대한 것은 필수적인 요소라고 할 수 있습니다. 그리고 이 요소들에 대해 빵마다 정의를 해보자면 초코빵일 땐 빵 표면은 밀가루, 속은 초콜릿으로 하고 크림빵일 땐 빵 표면은 쌀가루, 속은 크림이라고 할 수 있습니다. 하지만 뜬금없이 빵을 얼마나 빨리먹을 수 있는지에 대한 것은 빵을 만들 때 필수적인 요소가 아닙니다. 이처럼 프로그래밍을 할 때.. 2020. 12. 23.
[Java] 자바기초 - 객체지향(OOP) - 캡슐화(Encapsulation) 안녕하세요. J4J입니다. 이번 포스팅은 객체지향 프로그래밍의 특징 중 하나인 캡슐화에 대해 적어보는 시간을 가져보려고 합니다. 캡슐화란? 캡슐화라고 하는 것은 알약을 구매할 때 약들이 캡슐에 감싸져 있어 어떤 약인지 알 수 없는 것처럼 클래스 내부의 변수 및 메서드들이 외부에 노출되지 않기 위해 감싸져 있는 것을 말합니다. 클래스가 사용되는 목적에 따라 외부에 노출시킬 메서드와 변수가 정해질 것이고 외부 사용자들은 노출된 변수와 메서드만 사용될 수 있게 됩니다. 캡슐화의 사용 목적은 캡슐화가 무엇인지에 대해서만 들어봐도 어느 정도 예측을 할 수가 있는데 한 마디로 표현을 하면 정보은닉을 위해서입니다. 정보은닉에 담겨져 있는 의미처럼 외부에 의한 중요정보 탈취 및 객체 손상 등을 방지하기 위해 사용됩니다.. 2020. 12. 22.
[Java] 자바기초 - 오버라이딩과 오버로딩(overriding/overloading) 안녕하세요. J4J입니다. 이번 포스팅은 오버라이딩과 오버로딩에 대해 적어보는 시간을 가져보려고 합니다. 오버라이딩(overriding) 오버라이딩이란 부모 클래스에서 사용되고 있는 메서드들을 자식 클래스에서 재 정의한 것을 의미합니다. 자바로 프로그래밍을 하시다 보면 메서드 위에 @override라는 어노테이션을 본 적이 있으실 건데 이런 어노테이션이 붙어있는 메서드들이 모두 오버라이딩된 메서드들입니다. 오버라이딩을 사용하는 목적은 무엇일까요? 그 이유는 프로그래밍을 하다 보면 부모와 자식 클래스 모두 동일한 메서드 명을 사용해야 될 경우가 존재하는데 자식 클래스 입장에서는 부모 클래스와 다른 결과물을 보여주고 싶을 때가 있습니다. 실생화에서 예를 들어보면 10년 전에 부모님이 집을 소유하고 있었는데 .. 2020. 12. 21.
[Java] 자바기초 - 추상클래스와 인터페이스(abstract/interface) 안녕하세요. J4J입니다. 이번 포스팅은 추상 클래스와 인터페이스에 대해 적어보는 시간을 가져보려고 합니다. 사용 이유 추상 클래스와 인터페이스를 사용하는 이유는 클래스를 작성할 때 사용 용도에 맞는 필수적인 요소들을 포함시키기 위해 사용합니다. 예를 들어 핸드폰을 만들 때 핸드폰에는 필수적으로 알람 소리, 벨소리 등이 포함되는데 알람 소리와 벨소리들에 대해 정의하는 것을 포함시키지 않고 핸드폰 제작하는 것을 방지하기 위해 사용합니다. 이처럼 프로그래밍을 할 때도 A라는 클래스를 만들 때 클래스에 필요한 메서드들을 사전에 모두 정의하여 A클래스를 작성할 때 필수적인 메서드들 모두 정의할 수 있도록 도와줍니다. 추상 클래스 추상 클래스는 일반 클래스와 달리 abstract라는 키워드를 이용하여 클래스를 작.. 2020. 12. 21.
[Java] 자바기초 - 접근 제한자 안녕하세요. J4J입니다. 이번 포스팅은 접근 제한자에 대해 적어보는 시간을 가져보려고 합니다. 접근 제한자란? 자바에서 접근 제한자는 말 그대로 자바 내에 존재하는 클래스, 메서드, 변수 들에 대한 접근을 제한하는 역할을 수행합니다. 예를 들어 A클래스에 a라는 변수가 있고 B클래스에 b라는 변수가 있는데 a라는 변수를 A클래스에서만 접근할 수 있고 B클래스에서는 접근하지 못하게, 즉 사용하지 못하도록 해줍니다. 사용 이유 굳이 변수 등의 앞에 키워드를 추가하며 접근 제한자를 사용하는 이유는 바로 정보은닉의 목적 때문입니다. 코드를 작성하다보면 상대방에게 공개해도 되는 데이터 값과 공개하면 안 되는 데이터 값들이 명확하게 구분이 됩니다. 접근 제한자는 이처럼 구분이 필요한 데이터에 보안성을 높여주는 역.. 2020. 12. 16.
[Java] 자바기초 - 생성자(Constructor) 안녕하세요. J4J입니다. 이번 포스팅은 생성자에 대해 적어보는 시간을 가져보려고 합니다. 생성자란? 생성자는 객체를 생성하기 위해 선언을 할 때 변수들의 값들을 초기화 해주는 역할을 수행합니다. 자바에서는 객체를 생성할 때 new라는 키워드를 이용하여 객체를 생성하는데 동일 클래스에 대한 객체를 생성하더라도 생성자가 어떻게 정의되어 있는지에 따라 서로 다른 결과를 만들어 줄 수 있습니다. 생성자의 형태는 메서드의 형태와 유사하지만 메서드와 달리 결과 값을 리턴해주는 타입은 정의하지 않습니다. 그렇기 때문에 {접근지정자} {클래스명} ({파라미터}) {내용} 의 형태로 정의하여 작성을 할 수 있습니다. 다음 코드를 보도록 하겠습니다. package contructor; public class Book {.. 2020. 12. 14.
[Java] 자바기초 - Wrapper Class 안녕하세요. J4J입니다. 이번 포스팅은 Wrapper Class에 대해 적어보는 시간을 가져보려고 합니다. Wrapper Class란? Wrapper Class라고 하는 것은 자료형에 속하는 타입들의 객체화라고 말할 수 있습니다. 우선 자료형에 속하는 것들이 무엇이 있을까요? 나열을 해보면 byte, short, int , long, float, double, char, boolean, String 등이 있습니다. ※ 자료형에 대해 더 자세히 알고 싶다면? [Java] 자바기초 - 자료형 그리고 이런 자료형들을 Wrapper Class로 표현하면 아래 표와 같이 표현할 수 있습니다. 자료형 Wrapper Class byte Byte short Short int Integer long Long float.. 2020. 12. 13.
[Java] 자바기초 - 형 변환(Promotion/Casting) 안녕하세요. J4J입니다. 이번 포스팅은 형 변환에 대해 적어보는 시간을 가져보려고 합니다. 형 변환이란? 형 변환이라고 하는 것은 자료형에 저장되어 있는 값들을 다른 형태의 자료형에 값을 집어 넣는 것 입니다. ※ 자료형에 대해 모르신다면? [Java] 자바기초 - 자료형 다음 코드로 예를 들어 봅시다. package transform; public class Example { public static void main(String[] args) { int intVal = 32; long longVal = intVal; System.out.println("intVal값: " + intVal); System.out.println("longVal값: " + longVal); } } 자료형 중 정수형에 속하.. 2020. 12. 11.
728x90
반응형