No cenário digital atual, proteger dados confidenciais é crucial tanto para indivíduos quanto para organizações. A criptografia RSA (Rivest-Shamir-Adleman) se destaca como uma solução robusta para proteção de dados. É um algoritmo de criptografia assimétrica, o que significa que utiliza um par de chaves: uma chave pública para criptografia e uma chave privada para descriptografia. Um dos principais benefícios da criptografia RSA é que a chave privada nunca precisa ser compartilhada, o que minimiza o risco de ser comprometida.
Este artigo explora como usar a criptografia RSA em três linguagens de programação populares – JavaScript, Python e PHP – facilitando a proteção de dados em aplicativos de plataforma cruzada.
Imagine que você está construindo uma aplicação web onde informações confidenciais (como dados de autenticação ou detalhes pessoais) devem ser transmitidas com segurança entre o cliente (front-end) e o servidor (back-end). Por exemplo, você pode criptografar uma mensagem no lado do cliente em JavaScript e depois descriptografá-la no servidor usando Python ou PHP.
RSA é adequado para esse cenário porque fornece a flexibilidade de criptografia em um idioma e descriptografia em outro, garantindo compatibilidade entre plataformas.
JavaScript (Next.js com JSEncrypt)
Criptografia:
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; };
Descriptografia:
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; };
Explicação:
Criptografia de chave pública: A biblioteca JSEncrypt criptografa a mensagem usando a chave pública. Isso garante que apenas a chave privada correspondente possa descriptografá-la.
Descriptografia de chave privada: A mensagem é descriptografada com a chave privada, que é armazenada com segurança em uma variável de ambiente.
Considerações de segurança: Ao usar RSA, garantimos que os dados enviados do cliente sejam criptografados e seguros.
Python (usando biblioteca rsa)
Criptografia:
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()
Descriptografia:
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()
Explicação:
Criptografia de chave pública: A mensagem é criptografada usando uma chave pública, garantindo que apenas o detentor da chave privada pretendida possa descriptografá-la.
Codificação Base64: Após a criptografia, a mensagem é codificada em Base64 para garantir compatibilidade com transmissão de texto.
Descriptografia de chave privada: A chave privada é usada para descriptografar a mensagem criptografada codificada em Base64, garantindo a confidencialidade.
PHP (usando OpenSSL)
Criptografia:
function encrypt_with_public_key($message) { $publicKey = getenv('PUBLIC_KEY'); openssl_public_encrypt($message, $encrypted, $publicKey); return base64_encode($encrypted); }
Descriptografia:
function decrypt_with_private_key($encryptedMessage) { $privateKey = getenv('PRIVATE_KEY'); $encryptedData = base64_decode($encryptedMessage); openssl_private_decrypt($encryptedData, $decrypted, $privateKey); return $decrypted; }
Explicação:
Criptografia de chave pública: A função openssl_public_encrypt criptografa a mensagem usando a chave pública, garantindo que apenas a chave privada possa descriptografá-la.
Descriptografia de chave privada: A função openssl_private_decrypt descriptografa a mensagem usando a chave privada, garantindo que as informações confidenciais permaneçam seguras.
Variáveis de ambiente: Tanto as chaves públicas quanto as privadas são armazenadas com segurança em variáveis de ambiente, aumentando a segurança.
Use variáveis de ambiente: Sempre armazene suas chaves em variáveis de ambiente em vez de codificá-las em seu aplicativo. Isso reduz o risco de exposição de informações confidenciais.
Criptografar dados confidenciais: Criptografe dados pessoais e confidenciais, como senhas, detalhes financeiros ou informações de identificação pessoal (PII) para evitar acesso não autorizado.
Use HTTPS: Garanta que seu aplicativo se comunique por HTTPS para proteger os dados em trânsito.
Gerenciamento seguro de chaves: alterne regularmente as chaves de criptografia e garanta que elas sejam armazenadas com segurança.
Segurança de dados aprimorada: A criptografia RSA garante que dados confidenciais sejam mantidos seguros durante a transmissão, evitando acesso não autorizado.
Criptografia assimétrica: RSA usa uma chave pública para criptografia e uma chave privada para descriptografia, o que garante que a chave privada nunca precise ser compartilhada.
Compatibilidade entre plataformas: O RSA funciona perfeitamente em diferentes plataformas e linguagens de programação, tornando-o ideal para aplicações web onde diferentes tecnologias são usadas no cliente e no servidor.
A criptografia RSA oferece uma maneira confiável de proteger dados confidenciais em vários ambientes de programação. Ao implementar a criptografia e descriptografia RSA em JavaScript, Python e PHP, você pode proteger informações confidenciais, aumentar a segurança e garantir a compatibilidade entre plataformas. Seja para proteger chamadas de API, proteger os dados do usuário ou garantir a confidencialidade das mensagens, a RSA fornece uma solução de criptografia robusta.
Se você achou este guia útil, considere compartilhá-lo com outros desenvolvedores e fique atento para mais informações sobre criptografia e segurança de dados!
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3