본문 바로가기

Back-end/JAVA & Spring135

[RSA] RSA MODULUS, EXPONENT RSA키는 비대칭키로 개인키와 공개키로 되어있습니다. 여기서 공개키와 개인키는 위에서 보시는 것과 같이 구조가 되어 있습니다. 일반적으로 공개키는 n값과 e 값으로 구성되어 있습니다. n값은 Modulus이며 e값은 Public exponent값입니다. 개인키는 기본적으로 n, e, d, p, q, exponent1, exponent2, coefficient 값을 갖습니다. 여기서 가장 필요한 값은 d 값입니다. 개인키의 각 데이터는 공개키의 데이터를 포함합니다. 위의 RSAKeyValue에 해당하는 필드로 바꾸면 n : Modulus e: Exponent p : P q : Q exponent1 : DP exponent2 : DQ coefficient : InverseQ d : D 위의 XML 데이터(링.. 2021. 5. 20.
암호화(AES, RSA, SHA) 관련 이야기 우리 웹서비스에서 비회원과 통신하는 신규 기능을 개발하게 되었다 비회원과 통신이므로 보안에 신경을 많이 썼는데, 그 중 우리가 사용한 AES, RSA, SHA에 대해 이야기 해보려고한다 1.SHA-256 우리는 비회원의 로그인(!?)을 위해, 패스워드를 받았는데, 패스워드는 본인만 알고있어야 하므로, 복호화가 되지 않는 암호화 방법을 채택했다 복호화가 되지 않는 암호화 방법 중 유명한 것이 SHA 시리즈인데, SHA는 미국 NSA가 제작하고 미국 국립표준기술연구소(NIST)에서 표준으로 제작한 해시 암호 알고리즘이다 과거 SHA-0, SHA-1 버전을 거쳐 요즘은 SHA-2를 많이 쓰고있는데, SHA-2에는 SHA-224, SHA-256, SHA-384, SHA-512 등의 종류가 있다 현재 SHA-3도.. 2021. 5. 20.
AES와 SHA 차이 이것저것 알아보다 보니 SHA와 AES의 차이가 무엇인지 궁금해졌습니다.. 보통 평문이나 암호화를 해야하는 부분은 AES를 사용하고 서버에서 인증서의 암호화가 필요한 부분은 SHA를 사용해 이 개념을 확실히 하기 위해 조사를 했습니다. Encryption(암호화)와 Hash(해쉬)의 차이 암호화는 암호화 알고리즘을 이용하고, 인증은 해쉬함수를 이용하여 Verification Data를 만들어 원문에 태그(Tag)를 붙여서 전송하므로 해쉬함수를 이용합니다. 암호화 알고리즘과 해쉬 함수의 동작 방식을 이해하면, 암호화와 인증의 차이를 이해할 수 있습니다. 위의 왼쪽 그림은 암호화 알고리즘의 동작방식을 설명한 것이며, 암호화는 기본적으로 양방향 통신을 전제로 하므로 암호화와 복호화가 가능해야 합니다. 복호화되.. 2021. 5. 20.
[Java] 버퍼(BUFFER)란? 버퍼 개념 버퍼(Buffer)란 버퍼란 임시 저장 공간을 의미 합니다. 임시 저장 공간이라고 해서 쌩뚱맞게 보일 수 있지만 정확히 말하면 A와 B가 서로 입출력을 수행하는데에 있어서 속도차이를 극복하기 위해 사용하는 임시 저장 공간을 의미 합니다. 동영상 스트리밍 서비스에서의 버퍼 이 버퍼라는 개념은 굉장히 다양하게 사용되는데 가장 쉽게 접할 수 있는 곳은 유튜브같은 동영상 스트리밍 사이트입니다. 스트리밍 사이트에서 실시간으로 동영상을 보게 되면 보통 동영상이 진행되는 부분(빨간색)과 서버로부터 동영상을 내려받은 부분(밝은 회색) 그리고 앞으로 다운로드가 남은 부분을 본 적이 있을 것 입니다. 여기서 저 밝은 회색부분이 버퍼라고 볼 수 있습니다. 동영상 데이터가 내려 받아지는 속도에 비해 우리가 동영상을 1초씩 진.. 2021. 5. 17.
[Java] BufferedReader의 EOF 처리 & 여러 줄 입력 처리 - .readLine() BufferedReader.readLine() 패키지 메서드 설명 BufferedReader readLine() - text를 줄 단위로 읽어들인다. - 만약 stream의 끝에 다다르면 (EOF) null 값을 반환한다. BufferedReader로 여러 줄 입력 받기 import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = ""; while((str = br.readLin.. 2021. 5. 17.
[Java] 클래스 ProcessBuilder java.lang.Object ->java.lang.ProcessBuilder 이 클래스는 OS 의 프로세스의 작성에 사용됩니다. 각 ProcessBuilder인스턴스는 프로세스 속성의 컬렉션을 관리합니다. start() 메서드는 이러한 속성을 가지는 새로운 Process 인스턴스를 작성합니다. 같은 인스턴스로부터 start() 메서드를 반복해 호출해, 동일한 속성 또는 관련된 속성을 가지는 새로운 서브 프로세스를 작성할 수 있습니다. 각 프로세스빌더 는 다음의 프로세스 속성을 관리합니다. 「커멘드」. 호출되는 외부 프로그램 파일과 그 인수 (존재하는 경우)를 나타내는 캐릭터 라인의 리스트입니다. 어느 캐릭터 라인 리스트가 유효한 OS 커멘드를 나타낼까는 시스템에 응해 다릅니다. 예를 들어 개념상의 인수.. 2021. 5. 17.
[Java] 메소드의 개념 메소드(method) 자바에서 클래스는 멤버(member)로 속성을 표현하는 필드(field)와 기능을 표현하는 메소드(method)를 가집니다. 그중에서 메소드(method)란 어떠한 특정 작업을 수행하기 위한 명령문의 집합이라 할 수 있습니다. 메소드의 사용 목적 클래스에서 메소드를 작성하여 사용하는 이유는 중복되는 코드의 반복적인 프로그래밍을 피할 수 있기 때문입니다. 또한, 모듈화로 인해 코드의 가독성도 좋아집니다. 그리고 프로그램에 문제가 발생하거나 기능의 변경이 필요할 때도 손쉽게 유지보수를 할 수 있게 됩니다. 메소드를 작성할 때는 되도록 하나의 메소드가 하나의 기능만을 수행하도록 작성하는 것이 좋습니다. 메소드 정의 클래스에서 메소드를 정의하는 방법은 일반 함수를 정의하는 방법과 크게 다르.. 2021. 5. 17.
Java concurrent 함수 - invokeAll() java.util.concurrent에 있는 invokeAll() 함수에 대해서 얘기해보고자 합니다. ExecutorService에서 제공하는 함수로 callable list를 넘겨서 한꺼번에 수행하는 함수 입니다. 이 함수는 submit()이나 CompletionService와는 사용법이 좀 다르기에 예제로 간단히 설명해 보고자 합니다. invokeAll()의 간단한 사용 예제 ExecutorService에서는 submit(), execute()이외에도 다양한 함수를 제공합니다. 그중에서 테스트해 볼 함수는 invokeAll()이며 이 또한 두가지 형태가 존재합니다. Callable list를 받아 전부 끝나야 함수가 종료되는 형태 Callalbe list를 받고 timeout을 받아, 시간안에 끝나지.. 2021. 5. 17.
[JSP] 이메일 라이브러리 java mail + activation 라이브러리 파일 안녕하세요 꼬바리 입니다. 요즘은 jsp를 많이 사용 하지않지만 연습겸 공부겸 회원가입시 이메일 보내는 코드를 공부하였습니다. 오라클 아이디가 있으신 분들도 있지만 저 처럼 가입이 귀찮아 검색 하실 분들을 위해 파일 첨부 하겠습니다. 압축을 푸시고 lib폴더로 copy 하면 됩니다 (많은 분들이 이렇게 사용) 회원가입시 이메일 보내는 코드는 아직 미완성이니 나중에 포스팅 하도록 하겠습니다. (사실 너무 큰 오류가 계속 나서 저는 실패했습니다. 타임아웃 오류 해결하면 다음 오류.. 오류의 연결고리) 2021. 5. 12.
728x90
반응형