Коллеги, получаю ошибку 4029. Не пойму, в чем проблема.
Код, который закомментирован - пробовал и так. Т.е. обрезал строку в конце, так как там в конце есть лишний символ.
Но ни так, ни так не работает, постоянно получаю 4029. Подскажите, пожалуйста.
Forum on trading, automated trading systems and testing trading strategies
franzk, 2014.07.30 07:23
Sorry gjol ... your solution is also working for CRYPT_AES128+. I just forgot to adapt the key. Need to use a 32 long keystring.
Thanks again foir your help!
string rowString = "false"; string keyOrig = "4u7x!A%D4u7x!A%D4u7x!A%D4u7x!A%D"; uchar result[], charKey[], charString[]; // StringToCharArray(rowString,charString); // StringToCharArray(keyOrig,charKey); //StringToCharArray(rowString,charString,0,StringLen(rowString)); //StringToCharArray(keyOrig,charKey,0,StringLen(keyOrig)); Print("StringLen 1: "+StringToCharArray(rowString,charString,0,StringLen(rowString),CP_ACP)); Print("StringLen 2: "+StringToCharArray(keyOrig,charKey,0,StringLen(keyOrig),CP_ACP)); ArrayPrint(charString); ArrayPrint(charKey); ResetLastError(); CryptEncode(CRYPT_AES128,charString,charKey,result); Print("GetLastError(): "+GetLastError()); string sum; for(int i = 0; i < ArraySize(result); i++) { sum += CharToString(result[i]); } Print("sum: "+sum);
StringLen 1: 5 StringLen 2: 32 102 97 108 115 101 52 117 55 120 33 65 37 68 52 117 55 120 33 65 37 68 52 117 55 120 33 65 37 68 52 117 55 120 33 65 37 68 GetLastError(): 0 sum: ҐС STZ©ТGmv§(j¬A
Минимальная длина ключа 16 символов,
https://www.mql5.com/ru/code/16378
Вот в этой библиотеке хорошее решение. Посмотрите.
AES-256 - 32 символьный ключ.

https://www.mql5.com/ru/code/16378
Вот в этой библиотеке хорошее решение. Посмотрите.
AES-256 - 32 символьный ключ.
спасибо, просто не хотел библиотеку таскать)
балин) опять этот вопрос возник с base 64)
uchar arrayStringIn[], arrayResult[], arrayKey[] = {}; string str = "0L/RgNC40LLQtdGC"; StringToCharArray(str,arrayStringIn); CryptDecode(CRYPT_BASE64,arrayStringIn,arrayKey,arrayResult); Print(GetLastError()); string finalStr = CharArrayToString(arrayResult); Print(finalStr);
получаю опять 4029, декодирование не происходит.
Ключ для бейс, на сколько знаю, не обязателен. Что он хочет?)
подставлял вместо пустого ключа и 16, и 32 символа для пробы, проблема остается.
балин) опять этот вопрос возник с base 64)
получаю опять 4029, декодирование не происходит.
Ключ для бейс, на сколько знаю, не обязателен. Что он хочет?)
подставлял вместо пустого ключа и 16, и 32 символа для пробы, проблема остается.
Возможно, проблема в символе "/". Он может восприниматься в качестве управляющего символа. Более того, после него идет еще и R (часть от "/n/r").
всё нормально:
uchar arrayStringIn[], arrayResult[], arrayKey[] = {}; //string str = "0L/RgNC40LLQtdGC"; string str = "MTIzNDU"; StringToCharArray(str,arrayStringIn); CryptDecode(CRYPT_BASE64,arrayStringIn,arrayKey,arrayResult); Print(GetLastError()); string finalStr = CharArrayToString(arrayResult); Print(finalStr);
uchar arrayStringIn[], arrayResult[], arrayKey[] = {}; //string str = "0L/RgNC40LLQtdGC"; string str = "0LvRjyDQu9GPINC70Y8"; StringToCharArray(str,arrayStringIn); CryptDecode(CRYPT_BASE64,arrayStringIn,arrayKey,arrayResult); Print(GetLastError()); string finalStr = CharArrayToString(arrayResult); Print(finalStr); //EURJPY,M1: ля ля ля (UTF8 ля ля ля)

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Коллеги, получаю ошибку 4029. Не пойму, в чем проблема.
Код, который закомментирован - пробовал и так. Т.е. обрезал строку в конце, так как там в конце есть лишний символ.
Но ни так, ни так не работает, постоянно получаю 4029. Подскажите, пожалуйста.