«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Защита данных с помощью шифрования и дешифрования RSA на разных платформах

Защита данных с помощью шифрования и дешифрования RSA на разных платформах

Опубликовано 8 ноября 2024 г.
Просматривать:155

Securing Data with RSA Encryption and Decryption Across Platforms

Введение в шифрование RSA

В сегодняшней цифровой среде защита конфиденциальных данных имеет решающее значение как для отдельных лиц, так и для организаций. Шифрование RSA (Ривест-Шамир-Адлеман) выделяется как надежное решение для защиты данных. Это асимметричный алгоритм шифрования, что означает, что он использует пару ключей: открытый ключ для шифрования и закрытый ключ для дешифрования. Одним из основных преимуществ шифрования RSA является то, что закрытый ключ никогда не требует общего доступа, что сводит к минимуму риск его компрометации.

В этой статье рассказывается, как использовать шифрование RSA в трех популярных языках программирования — JavaScript, Python и PHP — чтобы упростить защиту данных в кроссплатформенных приложениях.

Межплатформенное шифрование и дешифрование: сценарий

Представьте, что вы создаете веб-приложение, в котором конфиденциальная информация (например, данные аутентификации или личные данные) должна безопасно передаваться между клиентом (внешняя часть) и сервером (внутренняя часть). Например, вы можете зашифровать сообщение на стороне клиента с помощью JavaScript, а затем расшифровать его на сервере с помощью Python или PHP.

RSA хорошо подходит для этого сценария, поскольку обеспечивает гибкость шифрования на одном языке и дешифрования на другом, обеспечивая кроссплатформенную совместимость.

Реализация RSA: JavaScript, Python и PHP.

JavaScript (Next.js с JSEncrypt)
Шифрование:

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 предлагает надежный способ защиты конфиденциальных данных в различных средах программирования. Реализуя шифрование и дешифрование RSA в JavaScript, Python и PHP, вы можете защитить конфиденциальную информацию, повысить безопасность и обеспечить межплатформенную совместимость. Будь то защита вызовов API, защита пользовательских данных или обеспечение конфиденциальности сообщений, RSA предоставляет надежное решение для шифрования.

Если это руководство оказалось для вас полезным, поделитесь им с другими разработчиками и следите за обновлениями, чтобы узнать больше о шифровании и безопасности данных!

Шифрование #RSA #CyberSecurity #DataSecurity #WebDevelopment #CrossPlatformSecurity #JavaScript #Python #PHP

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/shubhamkhon/securing-data-with-rsa-encryption-and-decryption-across-platforms-30d7?1. В случае нарушения прав обращайтесь по адресу [email protected]. удалить его
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3