"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 플랫폼 전반에서 RSA 암호화 및 복호화를 통해 데이터 보호

플랫폼 전반에서 RSA 암호화 및 복호화를 통해 데이터 보호

2024-11-08에 게시됨
검색:603

Securing Data with RSA Encryption and Decryption Across Platforms

RSA 암호화 소개

오늘날의 디지털 환경에서 민감한 데이터를 보호하는 것은 개인과 조직 모두에게 중요합니다. RSA(Rivest-Shamir-Adleman) 암호화는 데이터 보호를 위한 강력한 솔루션으로 돋보입니다. 이는 비대칭 암호화 알고리즘입니다. 즉, 암호화용 공개 키와 복호화용 개인 키라는 한 쌍의 키를 사용합니다. RSA 암호화의 주요 이점 중 하나는 개인 키를 공유할 필요가 없으므로 개인 키가 손상될 위험이 최소화된다는 점입니다.

이 문서에서는 세 가지 인기 프로그래밍 언어(JavaScript, Python, PHP)에서 RSA 암호화를 사용하여 크로스 플랫폼 애플리케이션에서 데이터를 보다 쉽게 ​​보호하는 방법을 살펴봅니다.

크로스 플랫폼 암호화 및 복호화: 시나리오

민감한 정보(예: 인증 데이터 또는 개인 정보)를 클라이언트(프런트 엔드)와 서버(백 엔드) 간에 안전하게 전송해야 하는 웹 애플리케이션을 구축한다고 상상해 보세요. 예를 들어 클라이언트 측에서 JavaScript로 메시지를 암호화한 다음 Python이나 PHP를 사용하여 서버에서 해독할 수 있습니다.

RSA는 한 언어에서는 암호화하고 다른 언어에서는 해독할 수 있는 유연성을 제공하여 플랫폼 간 호환성을 보장하므로 이 시나리오에 매우 적합합니다.

RSA 구현: JavaScript, Python 및 PHP

JavaScript(JSEncrypt가 포함된 Next.js)
암호화:

import JSEncrypt from 'jsencrypt';

// Function to encrypt a message using a public key
const encryptWithPublicKey = (message) => {
  const encryptor = new JSEncrypt();
  const publicKey = process.env.NEXT_PUBLIC_PUBLIC_KEY.replace(/\\n/g, "\n");
  encryptor.setPublicKey(publicKey);
  const encryptedMessage = encryptor.encrypt(message);
  return encryptedMessage;
};

복호화:

import JSEncrypt from 'jsencrypt';

// Function to decrypt a message using a private key
const decryptWithPrivateKey = (encryptedMessage) => {
  const decryptor = new JSEncrypt();
  const privateKey = process.env.PRIVATE_KEY.replace(/\\n/g, "\n");
  decryptor.setPrivateKey(privateKey);
  const decryptedMessage = decryptor.decrypt(encryptedMessage);
  return decryptedMessage;
};

설명:

공개 키 암호화: JSEncrypt 라이브러리는 공개 키를 사용하여 메시지를 암호화합니다. 이렇게 하면 해당 개인 키만 해독할 수 있습니다.
개인 키 복호화: 메시지는 환경 변수에 안전하게 저장된 개인 키로 복호화됩니다.
보안 고려 사항: RSA를 사용하면 클라이언트에서 전송된 데이터가 암호화되고 안전하게 보호됩니다.

Python(rsa 라이브러리 사용)
암호화:

import rsa
import base64

def encrypt_with_public_key(message: str, public_key_str: str) -> str:
    public_key = rsa.PublicKey.load_pkcs1_openssl_pem(public_key_str.encode())
    encrypted_message = rsa.encrypt(message.encode(), public_key)
    return base64.b64encode(encrypted_message).decode()

복호화:

import rsa
import base64

def decrypt_with_private_key(encrypted_message: str, private_key_str: str) -> str:
    private_key = rsa.PrivateKey.load_pkcs1(private_key_str.encode())
    encrypted_bytes = base64.b64decode(encrypted_message.encode())
    decrypted_message = rsa.decrypt(encrypted_bytes, private_key)
    return decrypted_message.decode()

설명:

공개 키 암호화: 메시지는 공개 키를 사용하여 암호화되므로 의도한 개인 키 보유자만 메시지를 해독할 수 있습니다.
Base64 인코딩: 암호화 후 메시지는 텍스트 전송과의 호환성을 보장하기 위해 Base64로 인코딩됩니다.
개인 키 해독: 개인 키는 Base64로 인코딩된 암호화된 메시지를 해독하는 데 사용되어 기밀성을 보장합니다.

PHP(OpenSSL 사용)
암호화:

function encrypt_with_public_key($message) {
    $publicKey = getenv('PUBLIC_KEY');
    openssl_public_encrypt($message, $encrypted, $publicKey);
    return base64_encode($encrypted);
}

복호화:

function decrypt_with_private_key($encryptedMessage) {
    $privateKey = getenv('PRIVATE_KEY');
    $encryptedData = base64_decode($encryptedMessage);
    openssl_private_decrypt($encryptedData, $decrypted, $privateKey);
    return $decrypted;
}

설명:

공개 키 암호화: openssl_public_encrypt 함수는 공개 키를 사용하여 메시지를 암호화하여 개인 키만 해독할 수 있도록 합니다.
개인 키 해독: openssl_private_decrypt 함수는 개인 키를 사용하여 메시지를 해독하여 민감한 정보를 안전하게 유지합니다.
환경 변수: 공개 키와 개인 키 모두 환경 변수에 안전하게 저장되어 보안이 강화됩니다.

암호화 모범 사례

환경 변수 사용: 키를 애플리케이션에 하드 코딩하는 대신 항상 환경 변수에 저장하세요. 이렇게 하면 민감한 정보가 노출될 위험이 줄어듭니다.
민감한 데이터 암호화: 비밀번호, 금융 정보, 개인 식별 정보(PII) 등 개인 데이터와 민감한 데이터를 암호화하여 무단 액세스를 방지합니다.
HTTPS 사용: 전송 중인 데이터를 보호하기 위해 애플리케이션이 HTTPS를 통해 통신하는지 확인하세요.
보안 키 관리: 암호화 키를 정기적으로 교체하고 안전하게 저장되도록 하세요.

RSA 암호화를 선택하는 이유는 무엇입니까?

향상된 데이터 보안: RSA 암호화는 전송 중에 민감한 데이터를 안전하게 보호하여 무단 액세스를 방지합니다.
비대칭 암호화: RSA는 암호화에 공개 키를 사용하고 암호 해독에 개인 키를 사용하므로 개인 키를 공유할 필요가 없습니다.
교차 플랫폼 호환성: RSA는 다양한 플랫폼과 프로그래밍 언어에서 원활하게 작동하므로 클라이언트 측과 서버 측에서 다양한 기술이 사용되는 웹 애플리케이션에 이상적입니다.

결론

RSA 암호화는 여러 프로그래밍 환경에서 민감한 데이터를 보호하는 안정적인 방법을 제공합니다. JavaScript, Python 및 PHP에서 RSA 암호화 및 암호 해독을 구현하면 민감한 정보를 보호하고 보안을 강화하며 플랫폼 간 호환성을 보장할 수 있습니다. API 호출 보안, 사용자 데이터 보호, 메시지 기밀성 보장 등 RSA는 강력한 암호화 솔루션을 제공합니다.

이 가이드가 도움이 되었다면 동료 개발자와 공유해 보시고 암호화 및 데이터 보안에 대한 더 많은 통찰력을 기대해 주세요!

암호화 #RSA #사이버보안 #데이터보안 #웹개발 #크로스플랫폼보안 #자바스크립트 #파이썬 #PHP

릴리스 선언문 이 기사는 https://dev.to/shubhamkhan/securing-data-with-rsa-encryption-and-decryption-across-platforms-30d7?1에서 복제됩니다. 침해가 있는 경우에는 [email protected]으로 문의하십시오. 그것을 삭제하려면
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3