[웹서비스 개발팀] CS(암호화, 정규표현식) 조사

Anna Park·2024년 7월 22일

webservice

목록 보기
22/33

1. 암호화 알고리즘 조사

비대칭 암호화 알고리즘:

a) RSA (Rivest-Shamir-Adleman):
컴퓨터 과학자 Ron Rivest, Adi Shamir, Lenard Adleman의 이름을 따서 명명됨
안전한 데이터 전송을 위해 널리 사용되는 알고리즘
공개 키로 데이터를 암호화하고 개인 키로 복호화(디코딩)함

b) PKI (Public Key Infrastructure):
디지털 인증서를 발급하고 관리하여 암호화 키를 제어하는 시스템
공개 키 암호화의 한 형태로 볼 수 있음

대칭 암호화 알고리즘:

a) DES (Data Encryption Standard):

64비트 블록으로 일반 텍스트를 변환
48비트 키를 사용하여 암호 텍스트로 변환
하위 수준 암호화 블록 암호 알고리즘

b) Triple DES:

DES 암호화를 세 번 연속 실행
데이터를 암호화, 복호화, 다시 암호화하는 과정을 거침

c) AES (Advanced Encryption Standard):

데이터 암호화의 '황금 표준'으로 간주됨
미국 정부 표준으로 채택되어 전 세계적으로 사용됨
DES를 대체하기 위해 개발됨

d) Twofish:

가장 빠른 암호화 알고리즘 중 하나로 평가됨
무료로 사용 가능
AES 선정 과정에서 최종 후보 중 하나였음

이러한 알고리즘들은 각각 고유한 특성과 장단점을 가지고 있으며, 사용 목적과 보안 요구사항에 따라 적절한 알고리즘을 선택하여 사용합니다. 비대칭 암호화는 주로 키 교환이나 디지털 서명에 사용되고, 대칭 암호화는 대량의 데이터를 빠르게 암호화하는 데 사용됩니다.

2. RegEx 정규표현식 조사

정규표현식(Regular Expression, RegEx)은 문자열 패턴을 정의하는 강력한 도구입니다. 컴퓨터 과학에서 중요한 개념으로, 텍스트 처리, 패턴 매칭, 데이터 검증 등 다양한 분야에서 사용됩니다. 정규표현식에 대해 자세히 알아보겠습니다:

  1. 정의:

    • 정규표현식은 특정 패턴의 문자열을 표현하기 위한 형식 언어입니다.
    • 문자열의 검색, 치환, 추출 등의 작업을 수행할 때 사용됩니다.
  2. 기본 구성 요소:

    • 리터럴 문자: 일반적인 문자들 (예: a, b, c, 1, 2, 3)
    • 메타문자: 특별한 의미를 가진 문자들 (예: ., *, +, ?, ^, $, \, |, (), [])
    • 문자 클래스: 대괄호 [] 안에 정의된 문자 집합
  3. 주요 메타문자와 의미:

    • . : 모든 문자 하나와 일치
      • : 앞의 요소가 0회 이상 반복
      • : 앞의 요소가 1회 이상 반복
    • ? : 앞의 요소가 0회 또는 1회 등장
    • ^ : 문자열의 시작
    • $ : 문자열의 끝
    • \ : 특수 문자를 일반 문자로 취급 (이스케이프)
    • | : 또는(OR) 연산
    • () : 그룹화
  4. 문자 클래스 예시:

    • [abc] : a, b, c 중 하나와 일치
    • [^abc] : a, b, c를 제외한 모든 문자와 일치
    • [0-9] : 모든 숫자와 일치
    • [a-zA-Z] : 모든 알파벳과 일치
  5. 수량자:

    • {n} : 정확히 n번 반복
    • {n,} : n번 이상 반복
    • {n,m} : n번 이상 m번 이하 반복
  6. 미리 정의된 문자 클래스:

    • \d : 숫자 [0-9]
    • \w : 단어 문자 [a-zA-Z0-9_]
    • \s : 공백 문자
    • \D, \W, \S : 각각의 반대 의미
  7. 사용 예시:

    • 이메일 주소 검증: ^[\w.-]+@[\w.-]+.\w+$
    • 전화번호 형식 검사: ^\d{3}-\d{3,4}-\d{4}$
    • URL 추출: https?://[\w.-]+.\w+
  8. 프로그래밍 언어 지원:

    • 대부분의 프로그래밍 언어(Python, JavaScript, Java 등)에서 정규표현식 라이브러리를 제공합니다.
  9. 장단점:
    장점:

    • 복잡한 문자열 패턴을 간결하게 표현 가능
    • 텍스트 처리 작업의 효율성 향상
    • 다양한 프로그래밍 언어에서 지원

    단점:

    • 복잡한 정규표현식은 가독성이 떨어질 수 있음
    • 잘못 작성된 경우 성능 이슈 발생 가능
    • 학습 곡선이 있음
  10. 응용 분야:

    • 데이터 검증 (예: 폼 입력 검증)
    • 텍스트 파싱 및 추출
    • 로그 파일 분석
    • 코드 편집기의 검색 및 치환 기능

RegExMatch()

문자열 = "이메일: example@email.com"
패턴 = "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
결과 = RegExMatch(문자열, 패턴)
// 결과는 "example@email.com"을 찾아 반환합니다.

RegExReplace()

문자열 = "전화번호는 123-456-7890 입니다."
패턴 = "\d{3}-\d{3}-\d{4}"
대체 = "xxx-xxx-xxxx"
결과 = RegExReplace(문자열, 패턴, 대체)
// 결과: "전화번호는 xxx-xxx-xxxx 입니다."

강력한 패턴 매칭: 복잡한 문자열 패턴을 쉽게 검색하고 조작할 수 있습니다.
유연성: 다양한 형식의 데이터(이메일, 전화번호, 날짜 등)를 처리할 수 있습니다.
효율성: 문자열 처리 작업을 빠르고 효과적으로 수행합니다.

사용되는 곳:

데이터 검증 (예: 이메일 주소, 전화번호 형식 확인)
텍스트 파싱 및 추출 (예: 로그 파일에서 특정 정보 추출)
문자열 포맷팅 (예: 특정 형식으로 데이터 변환)
민감한 정보 마스킹 (예: 신용카드 번호 일부를 *로 대체)

참고:

https://ahkscript.github.io/ko/docs/misc/RegEx-QuickRef.htm
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions
https://ibm.com
profile
교육개발, 웹서비스개발, 수학강사

0개의 댓글