암호화 파해치기
·
암호화
개발자가 개발을 할 때 고뇌하는 순간이 있습니다.개인정보를 저장할 때 어떤 암호화를 어떻게 사용할 것인가에 대한 고민을 하게됩니다.언제나 고민이 되는 이 암호화를 파해쳐 보려고자 합니다.암호화란 무엇일까?위키에서는 이렇게 설명하고 있다.승인된 당사자만이 해독할 수 있는 방식으로 정보를 변환하는 과정예를 들어 카카오톡 이라는 단어를 c3baec90e45684dc59c1846fff005... 처럼 나만 아는 문자로 변환하여 외부로부터 데이터를 보호하는 방법입니다.특히 개인정보 같은 민감한 데이터는 큰 피해를 줄 수 있기에 개인정보의 암호화는 법적으로 명시 되어 있을 만큼 개인정보의 암호화는 중요합니다.암호화의 과정암호화의 과정은 크게 3단계로 나눌 수 있습니다.평문(Plain Text) -> 암호화 알고리즘..
Kotlin은 Java와 무엇이 다른가? (13) - 배열,Collection/List
·
Kotlin/Basic
Kotlin에서 배열, Collection은 Java하고 다르기도하고 조금 더 간편하게 사용 가능하다.배열Kotlin에서 배열은 잘 사용되지 않는다.Effective Java Item 28 배열보다는 리스트를 이용하라고 되어있다.Kotlin에서 배열을 생성하는 방법은 arrayOf 연산자를 사용하면 된다.val cars = arrayOf("Mustang", "Tesla", "BMW")배열을 조회 하는 방법은 다음과 같다.fun main(){ val cars = arrayOf("Mustang", "Tesla", "BMW") println(cars[0]) //in 절을 사용해 조회 가능 for (car in cars) { println(car) } //..
Kotlin은 Java와 무엇이 다른가? (12) - 다양한 클래스
·
Kotlin/Basic
Kotlin에는 일반적인 Class 말고도 다양한 클래스들이 있다.Data 클래스Kotlin에 Data 클래스는 데이터에 관련된 클래스이다. Java에서는 DTO가 될수도 있다.일반 클래스와 달리 Equals, HashCode, toString을 자동적으로 만들어주기 때문에 매우유용하다.Java에서도 JDK 16부터 Data클래스와 같은 Record가 존재한다.class 앞에 data 키워드를 붙여 사용한다.data class Car( val brand: String, val model: String, var year: Int)fun main(){ val car1 = Car("Hyundai","Sonata",2023)}다음과 같이 data만 붙여주면 되기에 매우 쉽게 사용이 가능하다..
Kotlin은 Java와 무엇이 다른가? (11) - 중첩 클래스
·
Kotlin/Basic
중첩 클래스중첩 클래스는 클래스 안에 다른 클래스가 있는 경우를 말한다.중첩 클래스가 필요한 이유중첩 클래스가 필요한 이유는 다음과 같다.클래스 간에 계층구조를 나타내기 위하여한 클래스에서 논리적인 그룹화가 필요한 경우캡슐화를 증가시키기 위해같은 클래스 내에 있기에 가독성이 높아진다.중첩 클래스 종류JavaStatic Nested Class외부 클래스의 정적 멤버에만 접근할 때 사용Inner Class외부 클래스의 인스턴스와 메서드에 접근 해야할 때Local Class메서드나 초기화 블럭 내에서만 사용되야할 때Anonymous Class일회성으로 사용되는 클래스가 필요할 때KotlinNested Class일반적인 중첩 클래스Inner Class외부 클래스 인스턴스에 대한 참조를 저장해햐 할 때Nested..
Kotlin은 Java와 무엇이 다른가? (11) - Object
·
Kotlin/Basic
ObjectKotlin에서 object는 Java의 object 하고는 좀 차원이 다르다.Kotlin에 Object는 크게 3가지로 나뉜다.ObjectCompanion ObjectAnonymous Object이 3개의 Object는 쓰임과 위치에 따라서 달라지게 된다.Objectobject 키워드는 클래스 외부에서 쓰이게 되고 싱글톤 객체를 쉽게 생성하게 해주는 키워드이다.동시성 이슈를 해결해 주기 때문에 Thread Safe 하게 사용이 가능하다.생성하고자 하는 객체 앞에 object를 붙여 사용한다. object 객체이름object Car { var carName: String = "GM" fun start(){ println("start: $carName") }}fun main(){C..
Kotlin은 Java와 무엇이 다른가? (10) - 접근제어자
·
Kotlin/Basic
접근제어자Kotlin에 접근제어자는 public과 private은 같지만 다른 부분이 존재한다.Kotlin과 Java와의 차이접근 제어자KotlinJavapublic모든 곳에서 접근 가능 (기본값)모든 곳에서 접근 가능protected같은 클래스 또는 하위 클래스에서만 접근 가능같은 패키지 또는 하위 클래스에서 접근 가능internal같은 모듈 내에서만 접근 가능해당 없음private같은 클래스 내에서만 접근 가능같은 클래스 내에서만 접근 가능default해당 없음같은 패키지 내에서만 접근 가능 (기본값)public : Kotlin과 Java 모두 모든 것에서 접근 가능하다.protected : Kotlin과 Java와 차이점이 존재한다.Kotlin 같은 클래스 또는 하위 클래스에서만 접근 가능같은 패키..
Kotlin은 Java와 무엇이 다른가? (9) - 상속
·
Kotlin/Basic
상속Kotlin에서 상속은 문법이 같은 부분보다는 다른 부분이 좀 더 많다.추상 클래스(Abstract Class)추상 클래스는 구현이 일부 없는 불안전한 클래스이다.추상 클래스로 공통된 특성 뼈대를 만들고 상속 받는 클래스에서 살을 붙이는 형식으로 많이 쓰인다.추상 클래스 선언 방법Kotlin에서 추상 클래스는 abstract 키워드로 선언한다.abstract class Vehicle(val brand: String, open var model: String) { abstract fun start() abstract fun stop()}추상 메서드도 앞에 abstract를 붙여 사용 가능하다.Java와 같은점은 추상클래스는 인스턴스화할 수 없다.상속Kotlin에서 상속 할 때에는 : 객체 ..
Kotlin은 Java와 무엇이 다른가? (8) - 클래스
·
Kotlin/Basic
ClassKotlin에서 클래스를 다룰 때에는 Java에 문법과 비슷하면서도 조금 다르다.Kotlin에서 기본적으로 생성자를 만들 때에는 class 키워드를 사용한다.class Person {}Constructor(생성자)와 Property(프로퍼티)Kotlin에서 생성자를 만들 때에는 constructor 키워드를 사용한다.class Person constructor(name: String,age: Int){ var name: String = name, var age: Int = age}이 constructor 키워드는 생략이 가능한데, 생략하면 아래와 같이 사용 가능하다.class Person (name: String,age: Int){ var name: String = name, ..
Kotlin은 Java와 무엇이 다른가? (7) - 함수
·
Kotlin/Basic
Kotlin 함수Kotlin에서는 Java에 method를 대신해서 함수를 사용한다. 함수 선언 방법Kotlin에서 함수는 기본적으로 public 이기에 생략이 가능하다.함수를 선언하는 방법은 아래와 같다.fun 함수이름(매개변수1: 타입1, 매개변수2: 타입2): 반환타입 { return 결과값} 함수의 결과 값이 하나라면fun double(x: Int): Int = x * 2 이렇게도 표현이 가능하다. Default ParameterJava에서 Method를 호출할 때마다 기본적인 값이 들어가는 경우라면 Over Loading을 통해 해결했다.public class Calculator { public int add(int a, int b, int c) { return a + b + c; }..
Kotlin은 Java와 무엇이 다른가? (6) - 예외
·
Kotlin/Basic
Kotlin 에서 예외 처리Kotlin에서 예외 처리 문법 자체는 동일하다.다른 점은 try-catch-finally 자체가 expression이라는 것이다.따라서, 다음과 같이 사용이 가능하다.val result = try { // 코드} catch (e: Exception) { // 예외 처리 및 기본값 반환 null} Checked/Unchecked ExceptionKotlin에서는 자바와 다르게 Checked/Unchecked Exception의 차이가 없이 Unchecked Exception만 사용한다.컴파일러가 예외 처리를 강제하지 않기 때문에 예외 처리를 간소화할 수 있다는 장점이 있지만, 예상하지 못한 Exception이 발생할 수 있다는 문제가 발생할 수 있다. Try-W..