Russian Qt Forum
Сентябрь 28, 2024, 10:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Перевести с C#  (Прочитано 3534 раз)
GPPsoft
Гость
« : Апрель 08, 2012, 07:46 »

Здравствуйте. Начал переносить один проект с C# на QT C++. Столкнулся с проблемой. Необходимо перенести вот этот класс. Помогите пожалуйста. Заранее огромное человеческое спасибо!

Код:
    public class Crypt
    {
        string key = null;
        RijndaelManaged rijndaelCipher = null;

        public Crypt(string key)
        {
            this.key = key;
            rijndaelCipher = new RijndaelManaged();
            rijndaelCipher.Mode = CipherMode.CBC;
            rijndaelCipher.Padding = PaddingMode.PKCS7;
            rijndaelCipher.KeySize = 0x80;
            rijndaelCipher.BlockSize = 0x80;
        }

        public byte[] Decrypt(byte[] data)
        {
            byte[] pwdBytes = Encoding.UTF8.GetBytes(key);
            byte[] keyBytes = new byte[0x10];
            int len = pwdBytes.Length;
            if (len > keyBytes.Length)
            {
                len = keyBytes.Length;
            }
            Array.Copy(pwdBytes, keyBytes, len);
            rijndaelCipher.Key = keyBytes;
            rijndaelCipher.IV = keyBytes;
            return rijndaelCipher.CreateDecryptor().TransformFinalBlock(data, 0, data.Length);
        }

        public byte[] Encrypt(byte[] data)
        {
            byte[] pwdBytes = Encoding.UTF8.GetBytes(key);
            byte[] keyBytes = new byte[0x10];
            int len = pwdBytes.Length;
            if (len > keyBytes.Length)
            {
                len = keyBytes.Length;
            }
            Array.Copy(pwdBytes, keyBytes, len);
            rijndaelCipher.Key = keyBytes;
            rijndaelCipher.IV = keyBytes;
            ICryptoTransform transform = rijndaelCipher.CreateEncryptor();
            byte[] plainText = data;
            return transform.TransformFinalBlock(plainText, 0, plainText.Length);
        }

    }

Записан
V1KT0P
Гость
« Ответ #1 : Апрель 08, 2012, 11:58 »

Здравствуйте. Начал переносить один проект с C# на QT C++. Столкнулся с проблемой. Необходимо перенести вот этот класс. Помогите пожалуйста. Заранее огромное человеческое спасибо!

Код:
    public class Crypt
    {
        string key = null;
        RijndaelManaged rijndaelCipher = null;

        public Crypt(string key)
        {
            this.key = key;
            rijndaelCipher = new RijndaelManaged();
            rijndaelCipher.Mode = CipherMode.CBC;
            rijndaelCipher.Padding = PaddingMode.PKCS7;
            rijndaelCipher.KeySize = 0x80;
            rijndaelCipher.BlockSize = 0x80;
        }

        public byte[] Decrypt(byte[] data)
        {
            byte[] pwdBytes = Encoding.UTF8.GetBytes(key);
            byte[] keyBytes = new byte[0x10];
            int len = pwdBytes.Length;
            if (len > keyBytes.Length)
            {
                len = keyBytes.Length;
            }
            Array.Copy(pwdBytes, keyBytes, len);
            rijndaelCipher.Key = keyBytes;
            rijndaelCipher.IV = keyBytes;
            return rijndaelCipher.CreateDecryptor().TransformFinalBlock(data, 0, data.Length);
        }

        public byte[] Encrypt(byte[] data)
        {
            byte[] pwdBytes = Encoding.UTF8.GetBytes(key);
            byte[] keyBytes = new byte[0x10];
            int len = pwdBytes.Length;
            if (len > keyBytes.Length)
            {
                len = keyBytes.Length;
            }
            Array.Copy(pwdBytes, keyBytes, len);
            rijndaelCipher.Key = keyBytes;
            rijndaelCipher.IV = keyBytes;
            ICryptoTransform transform = rijndaelCipher.CreateEncryptor();
            byte[] plainText = data;
            return transform.TransformFinalBlock(plainText, 0, plainText.Length);
        }

    }

И? Что именно не можешь перенести?
Записан
Figaro
Гость
« Ответ #2 : Апрель 08, 2012, 15:55 »

Голимыми кутями не получится... OpenSSL ну или всякая порнография типа QCA + OpenSSL
Записан
Bepec
Гость
« Ответ #3 : Апрель 09, 2012, 06:52 »

GPPsoft, а ты ещё лучше просто опиши, что тебе надо сделать Улыбающийся

А то не все тут в С# разбираются. Мб на Qt будет более простое и лёгкое решение твоей проблемы?
Записан
V1KT0P
Гость
« Ответ #4 : Апрель 09, 2012, 07:02 »

GPPsoft, а ты ещё лучше просто опиши, что тебе надо сделать Улыбающийся

А то не все тут в С# разбираются. Мб на Qt будет более простое и лёгкое решение твоей проблемы?
Я тоже не могу понять что у него вызывает трудности. Толи этот класс перенести не может, то-ли аналог RijndaelManaged на C++ найти не может.
Rijndael - это AES. Можно взять как готовые реализации так и самому написать.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.131 секунд. Запросов: 21.