Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
2 / 2 / 1
Регистрация: 29.10.2012
Сообщений: 4
1

Имея лишь modulus и exponent зашифровать строку при помощи RSA

20.04.2014, 22:19. Просмотров 2348. Ответов 3
Метки нет (Все метки)


В общем, есть код на C#, и есть проект на C++. Нужно в этот проект встроить этот код.
Проблемы в наличии библиотек.
Нужно: имея лишь modulus и exponent зашифровать строку при помощи RSA. Сам в этом алгоритме мало что понимаю, но все попавшиеся до этого момента функции требовали больше аргументов, privat ключи (которых я не имею).
Это я к тому, что просто переписать код не смогу. Может в VS можно как-то одновременно использовать код на разных языках?

P.S.
За незнание особо не судите, только начинаю)
Не знал где начать тему - в ветке C++ или в C#, так что извиняйте за оффтоп если что.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
 
namespace Rsacs
{
   public class Rsacs
    {
        private byte[] _exponent;
        private byte[] _modulus;
 
        public string Exponent
        {
            set
            {
                _exponent = hexToBytes(value);
            }
        }
 
        public string Modulus
        {
            set
            {
                _modulus = hexToBytes(value);
            }
        }
        
        public string Encrypt(string data)
        {
            string encrypted;
            byte[] byteData = Encoding.ASCII.GetBytes(data);
            
            var parameters = new RSAParameters();
            var provider   = new RSACryptoServiceProvider();
 
            parameters.Exponent = _exponent;
            parameters.Modulus = _modulus;
 
            provider.ImportParametrs(parameters);
 
            return Convert.ToBase64String(provider.Encrypt(byteData, false)).ToString();
 
 
        }
 
        private byte[] hexToBytes(string hex)
        {
            byte[] arr = new byte[hex.Length >> 1];
 
            for (int i = 0; i < hex.Length >> 1; i++)
            {
                arr[i] = (byte)((getHexVal(hex[i << 1]) << 4) + (getHexVal(hex[(i << 1) + 1])));
            }
        }
 
        private int getHexVal(char hex)
        {
            int val = (int)hex;
            return val - (val < 58 ? 48 : 55);
        }
    }
}
Добавлено через 1 час 14 минут
Конкретно для чего мне это нужно.
Собственно, пишу программку работы со Steam. Застрял на шифровании пароля.

Источник кода и более популярное объяснение вопроса https://www.youtube.com/watch?v=2LKrVTv93h8
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.04.2014, 22:19
Ответы с готовыми решениями:

Зашифровать алгоритмом RSA имея паблик ключ
Вообщем проблема такая, пытаюсь авторизоваться на игровом сервере, в 1 пакете приходит публичный...

Можно ли на VB зашифровать данные при помощи ActiveX ?
Mozhet kto znaet est li na VB vozmozhnost zashifrovat dannie pri pomozhi ActiveX? Vrode kak v Java?

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

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

__________________
Помогаю в написании курсовых работ и дипломов здесь.
Записывайтесь на профессиональные курсы С#-разработчиков‌
3
870 / 768 / 174
Регистрация: 11.01.2012
Сообщений: 1,942
21.04.2014, 03:01 2
Цитата Сообщение от Furioness Посмотреть сообщение
В общем, есть код на C#, и есть проект на C++. Нужно в этот проект встроить этот код.
Цитата Сообщение от Furioness Посмотреть сообщение
Это я к тому, что просто переписать код не смогу. Может в VS можно как-то одновременно использовать код на разных языках?
Столько готовых алгоритмов в сети на С++. Ну ладно, не хотите если, можно так.
Не серьезно это - но , ради баловства : можно собрать код в библиотеку классов , потом
подредактировать IL -код и применять длл-ку уже в С++.
Что бы лишний раз не ловить исключений, лучше сделать
все поля статическими.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
   public class Rsacs
    {
       private static byte[] _exponent;
       private static byte[] _modulus;
 
        public static string Exponent
        {
            set
            {
                _exponent = hexToBytes(value);
            }
        }
 
        public static string Modulus
        {
            set
            {
                _modulus = hexToBytes(value);
            }
        }
 
        public static string Encrypt(string data)
        {
            string encrypted = "";
            byte[] byteData = Encoding.ASCII.GetBytes(data);
            try
            {
                var parameters = new RSAParameters();
                using (var provider = new RSACryptoServiceProvider())
                {
 
                    parameters.Exponent = _exponent;
                    parameters.Modulus = _modulus;
 
                    provider.ImportParameters(parameters);
 
                    encrypted = Convert.ToBase64String(provider.Encrypt(byteData, false)).ToString();
                }
            }
            catch (CryptographicException e)
            {
                //Catch this exception in case the encryption did
                //not succeed.
                System.Windows.Forms.MessageBox.Show(e.Message);
 
            }
            return encrypted;
 
        }
 
        private static byte[] hexToBytes(string hex)
        {
            byte[] arr = new byte[hex.Length >> 1];
 
            for (int i = 0; i < hex.Length >> 1; i++)
            {
                arr[i] = (byte)((getHexVal(hex[i << 1]) << 4) + (getHexVal(hex[(i << 1) + 1])));
            }
            return arr;
        }
 
        private static int getHexVal(char hex)
        {
            int val = (int)hex;
            return val - (val < 58 ? 48 : 55);
        }
    }
Саму длл после правки IL - кода приложил.

Применение в С++
примерно так
(поскольку свойств в С++ нет , используем методы set_Exponent и set_Modulus)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <string>
#include <Windows.h> 
 
typedef void ( WINAPI * LPFN_set_Exponent ) (const char *); 
typedef void ( WINAPI * LPFN_set_Modulus ) (const char *); 
typedef char* ( WINAPI * LPFN_Encrypt ) ( const char *); 
 
int main()
{
    HINSTANCE hMyDLL = LoadLibrary("NewDllRsaCS.dll"); 
    if (NULL == hMyDLL) 
    {
        std::cout << "LoadLibrary failed\n"; 
        return -1;
    }
    
        LPFN_set_Exponent SetExponent = (LPFN_set_Exponent)GetProcAddress( hMyDLL, "set_Exponent" );
        if (NULL == SetExponent) 
        {
            std::cout << "GetProcAddress set_Exponent failed\n"; 
            return -2;
        }
                                                                 
                
        LPFN_set_Modulus SetModulus= (LPFN_set_Modulus)GetProcAddress( hMyDLL, "set_Modulus" );
        if (NULL == SetModulus) 
        {
            std::cout <<  "GetProcAddress set_Modulus failed\n";
            return -3;
        }
        
        LPFN_Encrypt Encrypt = (LPFN_Encrypt)GetProcAddress( hMyDLL, "Encrypt" );
        if (NULL == Encrypt) 
        {
            std::cout <<  "GetProcAddress Encrypt failed\n";
            return -4;
        }
 
 
        SetExponent("000001");  
        SetModulus(std::string('o',112).c_str());  // 
        char * str = Encrypt("password");
        std::cout << str;  
        
        FreeLibrary( hMyDLL );
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
1
Вложения
Тип файла: zip NewDllRsaCS.zip (1.9 Кб, 5 просмотров)
870 / 768 / 174
Регистрация: 11.01.2012
Сообщений: 1,942
21.04.2014, 04:25 3
не ту скинул, но не смог отредактировать сообщение.
Вот эта будет и в С#, и в С++ работать.
1
Вложения
Тип файла: zip DllRsaCS.zip (1.9 Кб, 30 просмотров)
2 / 2 / 1
Регистрация: 29.10.2012
Сообщений: 4
22.04.2014, 19:58  [ТС] 4
Интересно. Спасибо. То я уже решил C++/CLI использовать (но идея меня не особо радует в связи со всякими "новыми" указателями и прочими наворотами)
hashcode.ru
Сегодня-завтра попробую - отпишу.

Добавлено через 9 часов 49 минут
В итоге я задолбался с управляемыми и неуправляемыми хрен пойми чем в C++\CLI и выбрал ваш метод.
Спуст 3-4 минуты сборки программа выдала похожий на реальный зашифрованный пароль. Попробую отправить в Steam...

Добавлено через 2 часа 27 минут
Отправить удалось, запрос с виду верный, но "{"success":"false"}" , так что, пожалуй, продолжу здесь, но уже по поводу всей программы.

Добавлено через 17 часов 10 минут
В общем, вроде всё верно, вероятно, это шифрование всё-же отличается от того, которое в ихнем .js скрипте
Собственно, сам код (думал переписать по-человечески с использованием ООП для последующих действий, но если первый этап не проходит - смысла нет)

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
#pragma comment(lib, "libcurl.lib")
#pragma comment(lib, "lib_json.lib")
//#pragma comment(lib, "cryptlib.lib")
#include <stdio.h>
#include <curl.h>
#include <stdlib.h>
//#include <stdlib.h>
#include <iostream>
#include <string>
#include <fstream>
#include <locale.h>
//#include <stdlib.h>
#include <json.h>
#include <writer.h>
//#include "Rsa.h"
//#include <msclr/marshal_cppstd.h>
#include <iostream>
#include <string>
#include <Windows.h> 
//#include <atltime.h>
#include <time.h>
 
//using namespace Rsacs;
using namespace std;
 
typedef void (WINAPI * LPFN_set_Exponent) (const char *);
typedef void (WINAPI * LPFN_set_Modulus) (const char *);
typedef char* (WINAPI * LPFN_Encrypt) (const char *);
 
 
 
 
// Write all expected data in here
static string buffer;
 
// This is the writer call back function used by curl  
static int writer(char *data, size_t size, size_t nmemb, string *buffer)
{
    int result = 0;
    if (buffer != NULL)
    {
        buffer->append(data, size * nmemb);
        result = size * nmemb;
    }
    return result;
}
 
 
 
int main()
 
{
    HINSTANCE hMyDLL = LoadLibrary("DllRsaCS.dll");
    if (NULL == hMyDLL)
    {
        std::cout << "LoadLibrary failed\n";
        getchar();
        return -1;
    }
 
    LPFN_set_Exponent SetExponent = (LPFN_set_Exponent)GetProcAddress(hMyDLL, "set_Exponent");
    if (NULL == SetExponent)
    {
        std::cout << "GetProcAddress set_Exponent failed\n";
        getchar();
        return -2;
    }
 
 
    LPFN_set_Modulus SetModulus = (LPFN_set_Modulus)GetProcAddress(hMyDLL, "set_Modulus");
    if (NULL == SetModulus)
    {
        std::cout << "GetProcAddress set_Modulus failed\n";
        getchar();
        return -3;
    }
 
    LPFN_Encrypt Encrypt = (LPFN_Encrypt)GetProcAddress(hMyDLL, "Encrypt");
    if (NULL == Encrypt)
    {
        std::cout << "GetProcAddress Encrypt failed\n";
        getchar();
        return -4;
    }
 
    string login = "1337test666";
    string password = "simplepassword666!!!";
    Json::Value forDoLogin;
    forDoLogin["username"] = login;
    forDoLogin["donotcache"] = to_string(time(NULL) * 1000);
    Json::FastWriter JSwriter;
    //JSwriter.write(forDoLogin);
 
    CURL *handle = curl_easy_init();
    if (!handle) { cout << "handle error"; getchar(); return 0; }
 
 
    curl_easy_setopt(handle, CURLOPT_HEADER, 0);
    curl_easy_setopt(handle, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0");
 
 
    curl_easy_setopt(handle, CURLOPT_ENCODING, "gzip,deflate"); // Принудительно ставим gzip
 
 
    curl_easy_setopt(handle, CURLOPT_COOKIEJAR, "cookie.txt"); // указываем имя файла для хранения и считывания cookies-файлов
    curl_easy_setopt(handle, CURLOPT_COOKIEFILE, "cookie.txt");
 
 
    curl_easy_setopt(handle, CURLOPT_SSL_VERIFYPEER, 0); // не проверять SSL сертификат
    curl_easy_setopt(handle, CURLOPT_SSL_VERIFYHOST, 0); // не проверять Host SSL сертификата
 
    curl_easy_setopt(handle, CURLOPT_FOLLOWLOCATION, 1);
    curl_easy_setopt(handle, CURLOPT_MAXREDIRS, 3);
 
    curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, writer);
    curl_easy_setopt(handle, CURLOPT_WRITEDATA, &buffer);
 
 
    static char ErrorBuffer3[CURL_ERROR_SIZE];
    curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, ErrorBuffer3);
 
 
    curl_easy_setopt(handle, CURLOPT_URL, "https://steamcommunity.com/login/home");  //store.steampowered.com
    CURLcode res = curl_easy_perform(handle);
 
    if (res != CURLE_OK)
    {
        cout << "Error!" << ErrorBuffer3 << endl;
        getchar();
        return 0;
    }
 
    ofstream file("file.html");
    //file << buffer;
    buffer.clear();
    curl_easy_cleanup(handle);
 
 
    handle = curl_easy_init();
    if (!handle) { cout << "handle error"; getchar( ); return 0; }
 
 
    curl_easy_setopt(handle, CURLOPT_HEADER, 0);
    curl_easy_setopt(handle, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0");
 
 
    curl_easy_setopt(handle, CURLOPT_ENCODING, "gzip,deflate"); // Принудительно ставим gzip
 
    
    curl_easy_setopt(handle, CURLOPT_COOKIEJAR, "cookie.txt"); // указываем имя файла для хранения и считывания cookies-файлов
    curl_easy_setopt(handle, CURLOPT_COOKIEFILE, "cookie.txt");
 
    
    curl_easy_setopt(handle, CURLOPT_SSL_VERIFYPEER, 0); // не проверять SSL сертификат
    curl_easy_setopt(handle, CURLOPT_SSL_VERIFYHOST, 0); // не проверять Host SSL сертификата
 
    curl_easy_setopt(handle, CURLOPT_FOLLOWLOCATION, 1);
    curl_easy_setopt(handle, CURLOPT_MAXREDIRS, 3);
 
    curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, writer);
    curl_easy_setopt(handle, CURLOPT_WRITEDATA, &buffer);
 
 
    static char ErrorBuffer[CURL_ERROR_SIZE];
    curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, ErrorBuffer);
 
    string post_data = "username=" + login;
    curl_easy_setopt(handle, CURLOPT_POSTFIELDS, post_data.c_str());
    curl_easy_setopt(handle, CURLOPT_POSTFIELDSIZE, post_data.length());
 
    curl_easy_setopt(handle, CURLOPT_URL, "https://steamcommunity.com/login/getrsakey/");  //store.steampowered.com
    res = curl_easy_perform(handle);
 
    if (res != CURLE_OK)
    {
        cout << "Error!" << ErrorBuffer << endl;
        getchar( );
        return 0;
    }
 
    file << buffer;
    
 
    Json::Value retJson;   // will contains the root value after parsing.
    Json::Reader reader;
    bool parsingSuccessful = reader.parse(buffer, retJson);
    if (!parsingSuccessful)
    {
        // report to the user the failure and their locations in the document.
        std::cout << "Failed to parse configuration\n" << reader.getFormatedErrorMessages();
        return 0;
    }
 
    if (retJson["success"].asString()!="true")
    {
        cout << "getRSAKey: "<<retJson["success"];
        getchar();
        return 0;
    }
    
//  string exp = retJson["publickey_exp"].toStyledString( );
//  string mod = retJson["publickey_mod"].toStyledString( );
 
 
    SetExponent(retJson["publickey_exp"].toStyledString().c_str());
    SetModulus(retJson["publickey_mod"].toStyledString().c_str());  // 
    string encryptetPassword = Encrypt(password.c_str());
 
    //delete &password;
    FreeLibrary(hMyDLL);
    buffer.clear( );
    curl_easy_cleanup(handle);
 
    //-----------------------------------------------------------2222222222222
    //CTime tm = CTime::GetCurrentTime();
    forDoLogin["password"] = encryptetPassword;
    forDoLogin["rsatimestamp"] = retJson["timestamp"];
    forDoLogin["remember_login"] = "true";
    forDoLogin["captchagid"] = -1;
    //forDoLogin["emailauth"]="";
    //forDoLogin["emailsteamid"]="";
    //forDoLogin["loginfriendlyname"]="";
    //forDoLogin["captcha_text"]="";
 
    post_data = JSwriter.write(forDoLogin);
    //post_data = "a";
    //post_data = ""
    //post_data = "{\"donotcache\":\"" + forDoLogin["donotcache"].toStyledString() + "\",\"password\":" + forDoLogin["password"].toStyledString() + "\",\"rsatimestamp\":\"" + forDoLogin["rsatimestamp"].toStyledString() + "\,\"username\":\"" + login;
    cout << post_data;
//"{\"donotcache\":\"1398173411000\",\"password\":\"HzMGm0mk9QCg0OL1pDTuC1Z0I9nxq40uuXJGXPF7NClMQliCDrAgWvyeYwORp/4OgJeXVK9v6bEHnOPjYFAzrRlWsvi01ysd4obKae4Z3ooBOSXFFPaLk9+pEAgbhw+C581ENtd0nD/jQtP8aqpcH1eHZrRxU+...   std::basic_string<char,std::char_traits<char>,std::allocator<char> >
//"{\n   \"donotcache\" : \"1398173558000\",\n   \"password\" : \"CSI5FI8UBiS9kMfUOON/IMjiO2yvcOC3BNUt9tFVlfIr275JWaF7U3LIdN1hdlHihQmY1/ENcf2Gl8ZQS8IsQnUPu8qsyOOzQAaIRcpbTD32Gl6wrjZ9AkMrRlYSiRUHScTURUL1DQx2S2u3gf... std::basic_string<char,std::char_traits<char>,std::allocator<char> >
    //char post_data2[] = new char(writer.write(forDoLogin).c_str());
 
    handle = curl_easy_init();
    if (!handle) { cout << "handle error"; getchar(); return 0; }
 
 
    curl_easy_setopt(handle, CURLOPT_HEADER, 0);
    curl_easy_setopt(handle, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0");
 
 
    curl_easy_setopt(handle, CURLOPT_ENCODING, "gzip,deflate"); // Принудительно ставим gzip
 
 
    curl_easy_setopt(handle, CURLOPT_COOKIEJAR, "cookie.txt"); // указываем имя файла для хранения и считывания cookies-файлов
    curl_easy_setopt(handle, CURLOPT_COOKIEFILE, "cookie.txt");
 
 
    curl_easy_setopt(handle, CURLOPT_SSL_VERIFYPEER, 0); // не проверять SSL сертификат
    curl_easy_setopt(handle, CURLOPT_SSL_VERIFYHOST, 0); // не проверять Host SSL сертификата
 
    curl_easy_setopt(handle, CURLOPT_FOLLOWLOCATION, 1);
    curl_easy_setopt(handle, CURLOPT_MAXREDIRS, 3);
 
    curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, writer);
    curl_easy_setopt(handle, CURLOPT_WRITEDATA, &buffer);
 
 
    //static char ErrorBuffer[CURL_ERROR_SIZE];
    curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, ErrorBuffer);
 
    //string post_data = forDoLogin_s;
    curl_easy_setopt(handle, CURLOPT_POSTFIELDS,post_data.c_str());
    curl_easy_setopt(handle, CURLOPT_POSTFIELDSIZE, post_data.length());
 
    curl_easy_setopt(handle, CURLOPT_URL, "https://steamcommunity.com/login/dologin/");  //
    CURLcode res2 = curl_easy_perform(handle);
 
    if (res != CURLE_OK)
    {
        cout << "Error!" << ErrorBuffer << endl;
        getchar();
        return 0;
    }
 
    retJson.clear( );
    parsingSuccessful = reader.parse(buffer, retJson);
    if (!parsingSuccessful)
    {
        // report to the user the failure and their locations in the document.
        std::cout << "Failed to parse configuration\n" << reader.getFormatedErrorMessages();
        return 0;
    }
 
    if (retJson["success"].asString() != "true")
    {
        cout <<"doLogin: "<<retJson["success"];
        //getchar();
        //return 0;
    }
 
    file << buffer;
    file.close();
    buffer.clear();
    curl_easy_cleanup(handle);
 
    //Json::StyledWriter writer;
    cout << "End."<< endl;
    getchar( );
    return 0;
 
 
 
 
}
//{"success":true,"publickey_mod":"B44B1B","publickey_exp":"010001","timestamp":"72040800000"}
/*
new Ajax.Request('https://steamcommunity.com/login/dologin/', {
method: 'post',
parameters: {
password: encryptedPassword,
username: username,
emailauth: form.elements['emailauth'].value,
loginfriendlyname: form.elements['loginfriendlyname'].value,
captchagid: form.elements['captchagid'].value,
captcha_text: form.elements['captcha_text'].value,
emailsteamid: form.elements['emailsteamid'].value,
rsatimestamp: results.timestamp,
remember_login: (form.elements['remember_login'] && form.elements['remember_login'].checked) ? 'true' : 'false',
donotcache: (new Date() .getTime())
},
 
*/

Проект
Если что, заливать нужно сюда "D:\Projects\" (из-за крывых путей)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2014, 19:58

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь или здесь.

Можно ли редактировать сайт не имея доступа к аккаунту движка, а лишь
имея имя сервера, пароль , логин? Т е создан не мною сайт на wordpress и повешен на платный...

Зашифровать строчку RSA-1024
Добрый вечер. Есть строчка которую нужно зашифровать с пом RSA-1024. Суть алгоритма проста и...

RSA ,нужно зашифровать текст
Всем привет!Мне нужна помощь,нужно реализировать RSA шифрование.P Q и E нужно вводить с клавиатуры....

Напишитефункцию integerPower(base exponent) ,какая возвращает значение base exponent.
Напишитефункцию integerPower(base exponent) ,какая возвращает значение base exponent. Например,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.