在當今的數位環境中,保護敏感資料對於個人和組織都至關重要。 RSA (Rivest-Shamir-Adleman) 加密作為保護資料的強大解決方案脫穎而出。它是一種非對稱加密演算法,這意味著它使用一對金鑰:用於加密的公鑰和用於解密的私鑰。 RSA 加密的主要好處之一是私鑰永遠不需要分享,這最大限度地降低了私鑰外洩的風險。
本文探討如何在三種流行的程式語言(JavaScript、Python 和 PHP)中使用 RSA 加密,從而更輕鬆地保護跨平台應用程式中的資料。
假設您正在建立一個 Web 應用程序,其中敏感資訊(如身份驗證資料或個人詳細資料)必須在客戶端(前端)和伺服器(後端)之間安全傳輸。例如,您可以在客戶端使用 JavaScript 加密訊息,然後使用 Python 或 PHP 在伺服器上解密。
RSA 非常適合這種場景,因為它提供了一種語言加密和另一種語言解密的靈活性,確保了跨平台相容性。
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 可以跨不同平台和程式語言無縫運作,使其成為客戶端和伺服器端使用不同技術的 Web 應用程式的理想選擇。
RSA 加密提供了一種跨多個程式設計環境保護敏感資料的可靠方法。透過在 JavaScript、Python 和 PHP 中實現 RSA 加解密,您可以保護敏感資訊、增強安全性並確保跨平台相容性。無論是為了保護 API 呼叫、保護使用者資料或確保訊息的機密性,RSA 都提供了強大的加密解決方案。
如果您發現本指南有幫助,請考慮與其他開發人員分享,並繼續關注有關加密和資料安全的更多見解!
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3