Russian Qt Forum

Qt => Общие вопросы => Тема начата: GPPsoft от Апрель 08, 2012, 07:46



Название: Перевести с C#
Отправлено: 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);
        }

    }



Название: Re: Перевести с C#
Отправлено: V1KT0P от Апрель 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);
        }

    }

И? Что именно не можешь перенести?


Название: Re: Перевести с C#
Отправлено: Figaro от Апрель 08, 2012, 15:55
Голимыми кутями не получится... OpenSSL ну или всякая порнография типа QCA + OpenSSL


Название: Re: Перевести с C#
Отправлено: Bepec от Апрель 09, 2012, 06:52
GPPsoft, а ты ещё лучше просто опиши, что тебе надо сделать :)

А то не все тут в С# разбираются. Мб на Qt будет более простое и лёгкое решение твоей проблемы?


Название: Re: Перевести с C#
Отправлено: V1KT0P от Апрель 09, 2012, 07:02
GPPsoft, а ты ещё лучше просто опиши, что тебе надо сделать :)

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