IT/👨‍💻Computer Science

아핀 암호 - 자바스크립트 코드 예시

지식모아이령 2023. 7. 26. 11:06

아핀 암호를 자바스크립트로 어떻게 구현하는지 알아보려고 합니다. 파이썬에서 배웠던 아핀 암호의 원리를 자바스크립트에서 구현해보며, 프로그래밍 언어의 다양성을 체험해보실 수 있을 것입니다.

 

자바스크립트 로고

 

1. 자바스크립트로 아핀 암호 알아보기

자바스크립트웹 개발에서 흔히 사용되는 언어입니다. 동적인 웹사이트를 만들기 위해 사용되며, 클라이언트 사이드에서 주로 사용되지만 Node.js를 통해 서버 사이드에서도 사용됩니다. 이러한 특성 때문에 자바스크립트로 암호를 구현하면 웹사이트에서 직접 암호화와 복호화를 수행할 수 있어 매우 유용합니다.

 

☞아핀 암호가 뭔가요?

2. 자바스크립트 코드 예시

암호화 함수

아핀 암호의 암호화 과정을 자바스크립트 코드로 작성해봅시다.

function affineEncrypt(text, a, b) {
    let result = "";

    for (let i = 0; i < text.length; i++) {
        if (text[i].match(/[a-z]/i)) {
            // 알파벳인 경우에만 암호화
            let shift = a * (text.charCodeAt(i) - 'a'.charCodeAt(0)) + b;
            result += String.fromCharCode((shift % 26) + 'a'.charCodeAt(0));
        } else {
            // 알파벳이 아닌 경우 그대로 추가
            result += text[i];
        }
    }

    return result;
}

 

복호화 함수

이제 아핀 암호의 복호화 과정을 자바스크립트 코드로 작성해봅시다.

function egcd(a, b) {
    if (a === 0) {
        return [b, 0, 1];
    } else {
        let [g, x, y] = egcd(b % a, a);
        return [g, y - Math.floor(b / a) * x, x];
    }
}

function modInverse(a, m) {
    let [g, x] = egcd(a, m);
    if (g !== 1) {
        throw "Modular inverse does not exist";
    } else {
        return (x % m + m) % m;
    }
}

function affineDecrypt(cipher, a, b) {
    let result = "";
    let a_inv = modInverse(a, 26);

    for (let i = 0; i < cipher.length; i++) {
        if (cipher[i].match(/[a-z]/i)) {
            // 알파벳인 경우에만 복호화
            let shift = a_inv * (cipher.charCodeAt(i) - 'a'.charCodeAt(0) - b);
            result += String.fromCharCode((shift % 26) + 'a'.charCodeAt(0));
        } else {
            // 알파벳이 아닌 경우 그대로 추가
            result += cipher[i];
        }
    }

    return result;
}

 

3. 코드 실행 결과

아핀 암호의 암호화와 복호화 과정을 자바스크립트로 구현하였습니다. 이제 이 함수들을 사용해서 실제로 메시지를 암호화하고 복호화해보겠습니다.

let text = "affinecipher";
let a = 5;
let b = 8;

let encrypted = affineEncrypt(text, a, b);
let decrypted = affineDecrypt(encrypted, a, b);

console.log("Original text: " + text);
console.log("Encrypted text: " + encrypted);
console.log("Decrypted text: " + decrypted);

이 코드를 실행하면 원본 메시지가 어떻게 암호화되고 복호화되는지 확인할 수 있습니다.

 

크롬 개발자 도구에서 자바스크립트로 짠 아핀암호 암호화&#44; 복호화 한 과정
아핀암호 자바스크립트 코드 실행 예시


4. 마치며

아핀 암호는 그 원리와 실행 방법이 간단하면서도, 충분히 효과적인 암호화 방법입니다. 오늘 배운 자바스크립트 코드를 통해 이러한 암호화 방법을 직접 구현해보는 경험을 통해, 암호학에 대한 이해를 더욱 높일 수 있을 것입니다.

 

☞초보자에게 추천하는 개발 매거진 보러가기