Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 17.11.2013
Сообщений: 47

Не могу разобраться с типами данных

10.06.2016, 19:24. Показов 1135. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Реализую ЭЦП на основе RSA.
Дошел до хэширования сообщения.
1) Нужно подписать сообщение, т.е возвести хэш функцию в степень закрытого ключа по модулю.
2) Нужно подпись возвести в степень открытого ключа по модулю.
3) Получить по сути наш исходный хэш.

Вопрос состоит в том, в какой тип преобразовать string, где хранится hex строка хэша, чтобы проделать 2 операции возведения в степень, а потом преобразовать обратно в хэш?
Миниатюры
Не могу разобраться с типами данных  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.06.2016, 19:24
Ответы с готовыми решениями:

не могу разобраться с типами данных
Кто знает как мне упаковать int16 в массив byte m = new byte??? ну как то разделить int16 на две части???

Не могу разобраться с типами
Здравствуйте. Подскажите пожалуйста уважаемые форумчане, как заработать следующий код: optFactor n = map (mod n) далее...

Помогите разобраться с типами данных
В чем различие между типами данных int и NSNumber? NSNumber - это что-то вроде аналога типа object в C#? В каких случаях лучше...

3
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18286 / 14209 / 5368
Регистрация: 17.03.2014
Сообщений: 28,888
Записей в блоге: 1
10.06.2016, 20:50
Legion14, BigInteger
0
1 / 1 / 0
Регистрация: 17.11.2013
Сообщений: 47
10.06.2016, 21:00  [ТС]
Зашифровал "1" функцией SHA256. (6b86b273ff34fce19d6b804eff5a3f5747ada4e aa22f1d49c01e52ddb7875b4b), потом в BigInteger, в закрытый , в открытый ключ, преобразовал в string, но получается чепуха.


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
int NODtest;
            int[] a = new int[] {            
            1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069,
            1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223,
            1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291, 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373,
            1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511,
            1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583, 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657,
            1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811,
            1823, 1831, 1847, 1861, 1867, 1871, 1873, 1877, 1879, 1889, 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973, 1979, 1987,
            1993, 1997, 1999, 2003, 2011, 2017, 2027, 2029, 2039, 2053, 2063, 2069, 2081, 2083, 2087, 2089, 2099, 2111, 2113, 2129,
            2131, 2137, 2141, 2143, 2153, 2161, 2179, 2203, 2207, 2213, 2221, 2237, 2239, 2243, 2251, 2267, 2269, 2273, 2281, 2287,
            2293, 2297, 2309, 2311, 2333, 2339, 2341, 2347, 2351, 2357, 2371, 2377, 2381, 2383, 2389, 2393, 2399, 2411, 2417, 2423,
            2437, 2441, 2447, 2459, 2467, 2473, 2477, 2503, 2521, 2531, 2539, 2543, 2549, 2551, 2557, 2579, 2591, 2593, 2609, 2617,
            2621, 2633, 2647, 2657, 2659, 2663, 2671, 2677, 2683, 2687, 2689, 2693, 2699, 2707, 2711, 2713, 2719, 2729, 2731, 2741,
            2749, 2753, 2767, 2777, 2789, 2791, 2797, 2801, 2803, 2819, 2833, 2837, 2843, 2851, 2857, 2861, 2879, 2887, 2897, 2903,
            2909, 2917, 2927, 2939, 2953, 2957, 2963, 2969, 2971, 2999, 3001, 3011, 3019, 3023, 3037, 3041, 3049, 3061, 3067, 3079,
            3083, 3089, 3109, 3119, 3121, 3137, 3163, 3167, 3169, 3181, 3187, 3191, 3203, 3209, 3217, 3221, 3229, 3251, 3253, 3257,
            3259, 3271, 3299, 3301, 3307, 3313, 3319, 3323, 3329, 3331, 3343, 3347, 3359, 3361, 3371, 3373, 3389, 3391, 3407, 3413,
            3433, 3449, 3457, 3461, 3463, 3467, 3469, 3491, 3499, 3511, 3517, 3527, 3529, 3533, 3539, 3541, 3547, 3557, 3559, 3571};
 
int p = a[new Random().Next(0, a.Length)];
            Console.WriteLine("Число p: {0}", p);
            Thread.Sleep(1000);
 
            int q = a[new Random().Next(0, a.Length)];
            Console.WriteLine("Число q: {0}", q);
            Thread.Sleep(1000);
 
            BigInteger N = p * q;
            Console.WriteLine("Число N: {0}", N);
 
            int f = (p - 1) * (q - 1);
            Console.WriteLine("Число f: {0}", f);
 
            int e = a[new Random().Next(0, a.Length)];
            Console.WriteLine("Число e: {0}", e);
            
 
            var NOD = new NOD();
            NODtest = NOD.test(e, f);
            Console.WriteLine("НОД (e,f): {0}", NODtest);
 
            BigInteger d = EulerAlgorithm.Foo(e, f);
            Console.WriteLine("Число d: {0}", d);
 
            Console.WriteLine("Открытый ключ: ({0},{1})\n", e, N);
 
            Console.WriteLine("Сообщение Алисы:");
            string x = Console.ReadLine();
 
            byte[] message = Encoding.Default.GetBytes(x);
 
            var sha = new SHA256.Sha256Digest();
            var shaH = sha.hash(message);
            
 
            byte[] sha256hash = new byte[32];
            sha256hash[0] = (byte)((shaH.H0 & 0xFF000000) >> 24);
            sha256hash[1] = (byte)((shaH.H0 & 0x00FF0000) >> 16);
            sha256hash[2] = (byte)((shaH.H0 & 0x0000FF00) >> 8);
            sha256hash[3] = (byte)(shaH.H0 & 0x000000FF);
            sha256hash[4] = (byte)((shaH.H1 & 0xFF000000) >> 24);
            sha256hash[5] = (byte)((shaH.H1 & 0x00FF0000) >> 16);
            sha256hash[6] = (byte)((shaH.H1 & 0x0000FF00) >> 8);
            sha256hash[7] = (byte)(shaH.H1 & 0x000000FF);
            sha256hash[8] = (byte)((shaH.H2 & 0xFF000000) >> 24);
            sha256hash[9] = (byte)((shaH.H2 & 0x00FF0000) >> 16);
            sha256hash[10] = (byte)((shaH.H2 & 0x0000FF00) >> 8);
            sha256hash[11] = (byte)(shaH.H2 & 0x000000FF);
            sha256hash[12] = (byte)((shaH.H3 & 0xFF000000) >> 24);
            sha256hash[13] = (byte)((shaH.H3 & 0x00FF0000) >> 16);
            sha256hash[14] = (byte)((shaH.H3 & 0x0000FF00) >> 8);
            sha256hash[15] = (byte)(shaH.H3 & 0x000000FF);
            sha256hash[16] = (byte)((shaH.H4 & 0xFF000000) >> 24);
            sha256hash[17] = (byte)((shaH.H4 & 0x00FF0000) >> 16);
            sha256hash[18] = (byte)((shaH.H4 & 0x0000FF00) >> 8);
            sha256hash[19] = (byte)(shaH.H4 & 0x000000FF);
            sha256hash[20] = (byte)((shaH.H5 & 0xFF000000) >> 24);
            sha256hash[21] = (byte)((shaH.H5 & 0x00FF0000) >> 16);
            sha256hash[22] = (byte)((shaH.H5 & 0x0000FF00) >> 8);
            sha256hash[23] = (byte)(shaH.H5 & 0x000000FF);
            sha256hash[24] = (byte)((shaH.H6 & 0xFF000000) >> 24);
            sha256hash[25] = (byte)((shaH.H6 & 0x00FF0000) >> 16);
            sha256hash[26] = (byte)((shaH.H6 & 0x0000FF00) >> 8);
            sha256hash[27] = (byte)(shaH.H6 & 0x000000FF);
            sha256hash[28] = (byte)((shaH.H7 & 0xFF000000) >> 24);
            sha256hash[29] = (byte)((shaH.H7 & 0x00FF0000) >> 16);
            sha256hash[30] = (byte)((shaH.H7 & 0x0000FF00) >> 8);
            sha256hash[31] = (byte)(shaH.H7 & 0x000000FF);
 
            string hex = BitConverter.ToString(sha256hash).Replace("-", "").ToLower();
            Console.WriteLine("ХЭШ Алисы: {0}\n", hex);
 
 
            BigInteger hexinBI = BigInteger.Parse(hex, NumberStyles.AllowHexSpecifier);
            BigInteger S = BigInteger.ModPow(hexinBI, d, N);
 
            BigInteger Hx_ = BigInteger.ModPow(S, e, N);
 
            string Hx = Convert.ToString(Hx_);
Миниатюры
Не могу разобраться с типами данных  
0
1 / 1 / 0
Регистрация: 17.11.2013
Сообщений: 47
10.06.2016, 22:23  [ТС]
Переформулирую вопрос:
В первом случае считает отлично, во втором, когда засовываем хэш - выделывается.
Миниатюры
Не могу разобраться с типами данных   Не могу разобраться с типами данных  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.06.2016, 22:23
Помогаю со студенческими работами здесь

Помогите разобраться с типами данных
Здравствуйте! Размер (в байтах) объектов каких типов данных зависит от разрядности процессора?

Список: Как разобраться с типами данных и получить доступ к элементам списка?
входным параметром является список, который запихивают в метод следующим образом: func(Arrays.asList("x", "y",...

Задали работу, не могу разобраться. Используется делфи 10, не могу разобраться, как это сделать
В одномерном массиве, состоящем из n вещественных элементов, вычислить: минимальный элемент массива и сумму элементов массива,...

Немогу разобраться с типами
Почему если задать int a = 555555555; то Visual Studio все устраивает, но если я задам int a = 5555555555; (на один знак больше) то он его...

Помогите разобраться с развернутыми типами
В общем сказали мне читать Майера и приходить позже... Читаю его книгу по ООК дошел до 8 главы и никак не могу разобраться с развернутыми...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru