"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Protegendo dados com criptografia e descriptografia RSA em várias plataformas

Protegendo dados com criptografia e descriptografia RSA em várias plataformas

Publicado em 2024-11-08
Navegar:275

Securing Data with RSA Encryption and Decryption Across Platforms

Introdução à criptografia RSA

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.

Criptografia e descriptografia multiplataforma: o cenário

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.

Implementação RSA: JavaScript, Python e PHP

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.

Melhores práticas para criptografia

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.

Por que escolher a criptografia RSA?

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.

Conclusão

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!

Criptografia #RSA #CyberSecurity #DataSecurity #WebDevelopment #CrossPlatformSecurity #JavaScript #Python #PHP

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/shubhamkhan/securing-data-with-rsa-encryption-and-decryption-across-platforms-30d7?1 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

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