← К каталогу
Исходный код · ID 3517

CBcrypt

bcrypt.mqh
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Библиотека bcrypt.mqh для платформы MQL5 предоставляет класс CBcrypt, предназначенный для шифрования и дешифрования данных с использованием алгоритма AES-256. Класс наследуется от CObject и использует встроенные функции платформы CryptEncode и CryptDecode для выполнения операций.

Библиотека позволяет задавать первичный и вторичный ключи шифрования, а также поддерживает инициализацию с использованием значений по умолчанию. Данные передаются в виде строк и возвращаются в виде шестнадцатеричного представления после шифрования.

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

Состав библиотеки

Классов: 1 · методов: 5 · конструкторов: 1 · деструкторов: 1 · отдельных функций: 0

Классы
Класс class CBcrypt

Класс для операций шифрования и дешифрования данных AES-256

Методы и конструкторы
Конструктор · CBcrypt CBcrypt()

Конструктор класса, инициализирующий пустые ключи и данные

Деструктор · CBcrypt ~CBcrypt()

Деструктор класса

Метод · CBcrypt void Init(string primary_key,string secondary_key)

Устанавливает первичный и вторичный ключи и генерирует ключ шифрования

Метод · CBcrypt void InitDefault()

Устанавливает ключи шифрования по умолчанию

Метод · CBcrypt void SetData(const string data)

Устанавливает текстовые данные для последующего шифрования

Метод · CBcrypt string Encrypt(const string text)

Шифрует текст с использованием AES-256 и возвращает результат в шестнадцатеричном формате

Метод · CBcrypt string Decrypt(string hexData)

Дешифрует шестнадцатеричные данные с использованием AES-256 и возвращает исходный текст

Получить полный код

Поиск по коду файла

#property version   "1.2"
#include <Object.mqh>

class CBcrypt : public CObject
  {
protected:
   string            m_key_p; // Primary key
   string            m_key_s; // Secondary key
   uchar             m_key_m[]; // Master Key
   string            m_data; // String data
   uchar             m_udata[]; // Uchar data array

public:
                     CBcrypt();
                    ~CBcrypt();
   void              Init(string primary_key,string secondary_key=NULL);
   void              InitDefault();
   void              SetData(const string data);
   string            Encrypt(const string text);
   string            Decrypt(string hexData);

protected:
   void              GenerateKey();
   string            ArrayToHex(uchar &arr[],int count=-1);
   string            HexToString(string hex,uchar &decode[]);

  };

CBcrypt::CBcrypt(void) : m_key_p(""),
   m_key_s(""),
   m_data("")
  {
  }

CBcrypt::~CBcrypt()
  {
  }

string CBcrypt::Encrypt(const string text)
  {
   m_data=text;

   StringToCharArray(m_data,m_udata);
   uchar dst[];
   int res=CryptEncode(CRYPT_AES256,m_udata,m_key_m,dst);

   if(res>0)
      return ArrayToHex(dst);
   return "-1,error";
  }

string CBcrypt::Decrypt(const string hexData)
  {
   uchar decodedHex[],src[];
   HexToString(hexData,decodedHex);

   int res=CryptDecode(CRYPT_AES256,decodedHex,m_key_m,src);

   if(res>0)
     {
      return CharArrayToString(src);
     }

   return "-1,error";
  }

void CBcrypt::Init(string primary_key=NULL,string secondary_key=NULL)
  {
   m_key_p=primary_key;
   m_key_s=secondary_key;
   GenerateKey();
  }

void CBcrypt::InitDefault(void)
  {

   m_key_p="7E846B635877D53A2BD51B320D9453407E8F4C22C104E1E9481783A50FADD162";

   m_key_s=(string)AccountInfoInteger(ACCOUNT_LOGIN);
   GenerateKey();
  }

void CBcrypt::SetData(const string text)
  {
   m_data=text;
   StringToCharArray(m_data,m_udata);
  }

Показано первые 50% кода (символов: 2698)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
269,80₽ ≈ $3.30