본문 바로가기

IT/JavaScript

다양한 암호화 방식을 감지하는 자바스크립트 코드 작성하기

728x90
반응형
728x170

암호화된 문자열을 분석하여 어떤 암호화 방식으로 암호화되었는지 판별하는 자바스크립트 코드를 만드는 방법을 소개합니다. 이 코드는 다양한 형식의 암호화 방식을 식별하여 사용자에게 알려줍니다.

  1. 개요와 목표:
    이 글은 주어진 암호문을 분석하여 암호화 방식을 감지하고 식별하는 자바스크립트 코드를 작성하는 과정을 안내합니다. 이를 통해 다양한 암호화 방식을 자동으로 인식하고 이해할 수 있습니다.
  2. 암호화 방식 감지 함수 작성:
    코드는 detectEncryptionType 함수를 통해 암호화 방식을 감지합니다. 정규 표현식을 사용하여 주어진 문자열을 다양한 패턴과 비교하여 암호화 방식을 식별합니다.

  3. 감지하는 암호화 방식 추가:
    코드는 초기 버전에서 16진수, Base64, 이진, Base32, 평문 (ASCII 문자열) 등을 감지하도록 작성되었습니다. 그 후 추가적인 암호화 방식 감지를 위해 정교한 정규 표현식을 작성합니다. 예를 들어, bcrypt 해시, Crypt (DES, MD5, SHA-256), SHA-256 Crypt 등의 암호화 방식을 감지할 수 있도록 합니다.

  4. 코드 사용 방법:
    사용자는 코드를 실행하고 암호화된 문자열을 입력합니다. 코드는 입력된 문자열을 분석하여 해당하는 암호화 방식을 식별하고 출력합니다.

  5. 코드의 한계와 발전 가능성:
    이 코드는 주어진 패턴과 정규 표현식을 기반으로 하기 때문에 모든 암호화 방식을 완벽하게 식별할 수는 없습니다. 새로운 암호화 방식이 나오거나 복잡한 경우에는 추가적인 수정이 필요할 수 있습니다.

  6. 보안 고려사항:
    코드는 주로 교육 및 정보 제공 목적으로 작성되었으며, 실제 보안 요구사항에는 부합하지 않을 수 있습니다. 실제 보안 시나리오에서는 전문적인 암호화 라이브러리 및 보안 전문가의 조언을 사용하는 것이 바람직합니다.

마지막으로 작성한 어떤 암호화 방식으로 암호화 한지 알아보는 자바스크립트 코드는 아래와 같습니다~

 

function detectEncryptionType(ciphertext) {
    if (ciphertext.match(/^[0-9a-fA-F]+$/)) {
        return "16진수 (HEX)";
    } else if (ciphertext.match(/^[A-Za-z0-9+/]+[=]{0,2}$/)) {
        return "Base64";
    } else if (ciphertext.match(/^[01]+$/)) {
        return "이진 (Binary)";
    } else if (ciphertext.match(/^[2-7A-Za-z]+$/)) {
        return "Base32";
    } else if (ciphertext.match(/^[\x20-\x7E]+$/)) {
        return "평문 (ASCII 문자열)";
    } else if (ciphertext.match(/^\$2[ayb]\$.{56}$/)) {
        return "bcrypt 해시";
    } else if (ciphertext.match(/^\$[356]\$.{0,32}\$.{43}$/)) {
        return "Crypt (DES, MD5, SHA-256)";
    } else if (ciphertext.match(/^\$5\$[0-9]{1,2}\$.{43}$/)) {
        return "SHA-256 Crypt";
    } else {
        return "알 수 없음";
    }
}

var input = prompt("암호문을 입력하세요: ");
var encryptionType = detectEncryptionType(input);

console.log("입력된 문자열은 " + encryptionType + " 형식으로 암호화되었습니다.");

 

이 글에서는 다양한 암호화 방식을 감지하는 자바스크립트 코드를 만드는 기본 아이디어와 절차를 소개했습니다. 더 많은 세부 정보와 코드 예제를 원하신다면, 해당 내용을 토대로 실제 코드를 작성하고 실험해보시면 좋을 것입니다.

728x90
반응형
그리드형