「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > RSA 暗号化と復号化によるプラットフォーム間でのデータの保護

RSA 暗号化と復号化によるプラットフォーム間でのデータの保護

2024 年 11 月 8 日に公開
ブラウズ:746

Securing Data with RSA Encryption and Decryption Across Platforms

RSA 暗号化の概要

今日のデジタル環境では、機密データの保護は個人にとっても組織にとっても同様に重要です。 RSA (Rivest-Shamir-Adleman) 暗号化は、データを保護するための堅牢なソリューションとして際立っています。これは非対称暗号化アルゴリズムであり、暗号化用の公開キーと復号化用の秘密キーのペアのキーを使用します。 RSA 暗号化の主な利点の 1 つは、秘密キーを共有する必要がないため、秘密キーが侵害されるリスクが最小限に抑えられることです。

この記事では、JavaScript、Python、PHP という 3 つの人気のあるプログラミング言語で RSA 暗号化を使用し、クロスプラットフォーム アプリケーションでのデータの保護を容易にする方法について説明します。

クロスプラットフォームの暗号化と復号化: シナリオ

機密情報 (認証データや個人情報など) をクライアント (フロントエンド) とサーバー (バックエンド) の間で安全に送信する必要がある Web アプリケーションを構築していると想像してください。たとえば、クライアント側で 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 は、さまざまなプラットフォームやプログラミング言語間でシームレスに動作するため、クライアント側とサーバー側でさまざまなテクノロジーが使用される Web アプリケーションに最適です。

結論

RSA 暗号化は、複数のプログラミング環境にわたって機密データを保護する信頼性の高い方法を提供します。 RSA 暗号化と復号化を JavaScript、Python、PHP に実装することで、機密情報を保護し、セキュリティを強化し、クロスプラットフォーム互換性を確保できます。 API 呼び出しの保護、ユーザー データの保護、メッセージの機密性の確保など、RSA は堅牢な暗号化ソリューションを提供します。

このガイドが役立つと思われた場合は、他の開発者と共有することを検討してください。暗号化とデータ セキュリティに関するさらなる洞察を今後もお楽しみください!

暗号化 #RSA #サイバーセキュリティ #データセキュリティ #Web開発 #クロスプラットフォームセキュリティ #JavaScript #Python #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