xd
Эксперт
-
Автор темы
- #1
Начало
Гайд для новичков/пастеров! Прощу вас относиться нормально и не флудить, спасибо за понимание!
Не много о самой либе:Crypto++ (Cryptopp) - это библиотека криптографии, которая предоставляет различные алгоритмы шифрования, хэширования, аутентификации и другие криптографические примитивы. Она написана на языке C++ и является одной из самых популярных криптографических библиотек.
- Симметричные алгоритмы:
- AES
- DES
- TripleDES
- Blowfish
- RC2,4,5,6
- Twofish
- Serpent
- Camellia
- Алгоритмы аутентифицированного шифрования:
- GCM
- CCM
- EAX
- Асимметричные алгоритмы:
- RSA
- ElGamal
- DSA
- ECDSA
- ECMQV
- Хэш-функции:
- MD5
- SHA-1, 256, 512
- Whirlpool
- RIPEMD-160
- Алгоритмы генерации ключей и случайных чисел:
- PKCS#12,5,8
- X.509
Пожалуйста, авторизуйтесь для просмотра ссылки.
.
Пожалуйста, авторизуйтесь для просмотра ссылки.
и подключить его к проекту. Я думаю это не составить труда(или нет?)Создаем .h(заголовок или же header) и следуем инструкции
Начинаем с инклудов и подключением библиотек:
includes/libs:
#include <aes.h>
#include <base64.h>
#include <modes.h>
#pragma comment(lib, "cryptlib.lib")
aesхуес:
namespace AES { //Чтобы не высерать основной неймспейс создаем свой
std::string Encrypt(std::string str, std::string cipher, std::string iv) { //функция которая шифрует наш стринг/string с помощью уникальных ключей cipher и iv, возвращает зашифрованный текст(std::string).
std::string Output;
CryptoPP::CFB_Mode<CryptoPP::AES>::Encryption Encryption((BYTE*)cipher.c_str(), cipher.length(), (BYTE*)iv.c_str());
CryptoPP::StringSource Encryptor(str, true, new CryptoPP::StreamTransformationFilter(Encryption, new CryptoPP::Base64Encoder(new CryptoPP::StringSink(Output), false)));
return Output;
}
std::string Decrypt(std::string str, std::string cipher, std::string iv) { //функция которая расшифрует зашифрованный стринг/string с помощью уникальных ключей cipher i iv, возвращает расшифрованный текст(std::string).
std::string Output;
CryptoPP::CFB_Mode<CryptoPP::AES>::Decryption Decryption((BYTE*)cipher.c_str(), cipher.length(), (BYTE*)iv.c_str());
CryptoPP::StringSource Decryptor(str, true, new CryptoPP::Base64Decoder(new CryptoPP::StreamTransformationFilter(Decryption, new CryptoPP::StringSink(Output))));
return Output;
}
}
AES::Encrypt("iDarling", "E9VwaE4nI8YElBMcdQE8guOWRc99d0cq", "ZEkY3CvOENM1gu9xdb0t8fWQ2XPtZUgO");
Console: RWnqazMopBo=
AES::Decrypt("RWnqazMopBo=", "E9VwaE4nI8YElBMcdQE8guOWRc99d0cq", "ZEkY3CvOENM1gu9xdb0t8fWQ2XPtZUgO");
Console: iDarling
Не много советов:
Создайте временных(уникальных) ключей. Каждый запрос - свой ключ шифрований.(с веба или внутри программы(лоадера) - генерация слов из рандомных цифр/букв).
Магия вне хогвартса:
P.S. Таким же успехом можете шифровать байтов.
Можно получить прикольный эффект - крипт(декрипт(текст, цифер1, ив1), цифер2, ив2);
Для веба (php):
public function encrypt($str, $cipher_key, $iv_key)
{
$encrypted = base64_encode(openssl_encrypt($str, 'aes-256-cfb', $cipher_key, true, $iv_key));
return $encrypted;
}
public function decrypt($str, $cipher_key, $iv_key)
{
$decrypted = openssl_decrypt(base64_decode($str), 'aes-256-cfb', $cipher_key, true, $iv_key);
return $decrypted;
}
Гайд предназначен для таких людей, а не для "гении" и гении кодинга, прежде чем высерать под темой посмотрите на скрин!
Не судите строго, делаю гайд впервые:)
(И это не со всем гайд :D)
Последнее редактирование: