- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
static void SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) {
sha2_word32 a, b, c, d, e, f, g, h, s0, s1;
sha2_word32 T1, T2, *W256;
int j;
W256 = (sha2_word32*)context->buffer;
/* Initialize registers with the prev. intermediate value */
// а с какого такого хуя вы решили, что компилятор непременно сунет это в регистры? Массивы для кого сделали?
// хотя это еще можно понять, есть вероятность, что компилятор так лучше соптимизирует (но далеко не факт)
a = context->state[0];
b = context->state[1];
c = context->state[2];
d = context->state[3];
e = context->state[4];
f = context->state[5];
g = context->state[6];
h = context->state[7];
j = 0;
do {
#if BYTE_ORDER == LITTLE_ENDIAN
/* Copy data while converting to host byte order */
REVERSE32(*data++,W256[j]);
/* Apply the SHA-256 compression function to update a..h */
T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] + W256[j];
#else /* BYTE_ORDER == LITTLE_ENDIAN */
/* Apply the SHA-256 compression function to update a..h with copy */
T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] + (W256[j] = *data++);
#endif /* BYTE_ORDER == LITTLE_ENDIAN */
T2 = Sigma0_256(a) + Maj(a, b, c);
h = g;
g = f;
f = e;
e = d + T1;
d = c;
c = b;
b = a;
a = T1 + T2;
j++;
} while (j < 16);
do {
/* Part of the message block expansion: */
s0 = W256[(j+1)&0x0f];
s0 = sigma0_256(s0);
s1 = W256[(j+14)&0x0f];
s1 = sigma1_256(s1);
/* Apply the SHA-256 compression function to update a..h */
T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] +
(W256[j&0x0f] += s1 + W256[(j+9)&0x0f] + s0);
T2 = Sigma0_256(a) + Maj(a, b, c);
h = g;
g = f;
f = e;
e = d + T1;
d = c;
c = b;
b = a;
a = T1 + T2;
j++;
} while (j < 64);
/* Compute the current intermediate hash value */
context->state[0] += a;
context->state[1] += b;
context->state[2] += c;
context->state[3] += d;
context->state[4] += e;
context->state[5] += f;
context->state[6] += g;
context->state[7] += h;
/* Clean up */
a = b = c = d = e = f = g = h = T1 = T2 = 0; // А вот это уже полная хуйня
//вы правда думаете, что компилятор не выкинет это нахуй?
}
guest 31.01.2017 00:17 # 0
j123123 31.01.2017 00:54 # +4
bormand 31.01.2017 00:23 # +1
> в машинных кодах
Ага, и молиться, что тред не приостановят и не сохранят контекст в своп/хиберфайл...
inkanus-gray 31.01.2017 00:34 # 0
bormand 31.01.2017 06:12 # +1
guest 31.01.2017 08:18 # −1
Steve_Brown 31.01.2017 09:36 # 0
inkanus-gray 31.01.2017 11:43 # 0
Но всё это легко провернуть в реальном режиме. А в защищённом из прикладного уровня (ring 3) могут не позволить. Придётся писать драйвер нулевого кольца, чтобы им блокировать шедулер.
barop 31.01.2017 14:20 # +2
А кроме того оно работает для одного проца, а их может быть несколько, и шедулер в теории может тебя запустить на другом проце если не установить афинити
В общем совет Стива хорош для 1992го года, наверное
bormand 31.01.2017 18:13 # +1
> но их тоже можно заблокировать
Может ли всемогущий бог создать камень, который он не сможет поднять?
Dummy00001 31.01.2017 19:20 # +1
это любой камень, на который всемогущий бог положил. без внешних стимулов не поднять.
Antervis 31.01.2017 22:01 # 0
barop 31.01.2017 14:16 # +2
Кроме шуток есть невыгружаемый пул, но только в ядре
Dummy00001 31.01.2017 17:05 # +2
на виндах это делается очень просто: запусти update виндов
barop 31.01.2017 17:22 # +2
--папа, а правда что Windows многозадачный?
--Да, сынок
--А как это, покажи?
--Сейчас, дискету доформатирую
bakagaijin 31.01.2017 20:37 # +2
inkanus-gray 01.02.2017 13:15 # 0
Была проблема только в голом DOS и в Windows 95/98 на компьютерах с Award BIOS, требовалось загрузить досовский драйвер для больших дискет (на машинах с AMI BIOS дополнительный драйвер загружать не требовалось).
Кстати, для DOS ещё была малоизвестная программа «фонового» форматирования дискет: она по таймеру переключала задачи между отправкой команд на форматирование и пользовательской задачей. Пока форматируется дискета, можно было заниматься чем-то несложным вроде редактирования текстов.
Dummy00001 01.02.2017 13:28 # 0
зато на 2К компом можно было пользоватся. поэтому проблемой это никогда не было.
да и по сравнению с про-софтом для размножения данных, это все тормозило. у нас была какая-то софтинка в те времена: даешь ей сорс дискетку в рам зачитать, а потом только дест дискетки менять надо было. писала+форматировала одновременно, делала это 10 или 20 секунд быстрее чем все остальное. и самое интересное - делала это тихо.
inkanus-gray 01.02.2017 13:32 # 0
bormand 31.01.2017 00:31 # +2
inkanus-gray 31.01.2017 00:40 # +1
https://en.wikipedia.org/wiki/Endianness#Middle-endian
gost 31.01.2017 10:21 # 0
Steve_Brown 31.01.2017 11:11 # +3
inkanus-gray 31.01.2017 11:40 # +2
И БЭСМ-6 с 48-битным словом...
j123123 31.01.2017 15:59 # +2
inkanus-gray 31.01.2017 16:22 # 0
barop 31.01.2017 16:27 # 0
inkanus-gray 31.01.2017 16:29 # 0
barop 31.01.2017 16:32 # 0
bormand 31.01.2017 17:54 # +1
guest 31.01.2017 16:36 # 0
barop 31.01.2017 16:44 # 0
guest 31.01.2017 17:08 # +4
* Да, уже есть алгоритмы для квантовых компьютеров, позволяющие нагибать криптографию, завязанную на сложность факторизации чисел (рса).
* Но нет квантовых компьютеров с количеством кубитов, позволяющим нагнуть рса с нормальной длиной ключа.
* Как с помощью квантовых компьютеров нагибать криптографию на элиптических кривых, пока не придумали.
* Сейчас вроде пилят ненастоящие квантовые компьютеры с большим количеством кубитов. Они не умеют нагибать криптографию, а используются для каких-то других задач. Вроде гугл эксперементирует с ними для задачи оптимизации в машинном обучении.
Dummy00001 31.01.2017 19:27 # +1
(не физик, может где путаюсь) я тоже думал что это какой-то прогресс. но на текущий момент времени, квантовые компы с дюжиной другой кубитов это большие шкафы, которые работают не намного быстрее чем обычные компы тех же размеров. и они не настоящие потому что танглмент (или как оно там) там только симулируется.
из того что я слышал большая часть этих компов идет в научную область для разработки квантовых алгоритмов. потому что теоретически они круты - но практически на них еще никто ничего интересного делать не умеет.
https://en.wikipedia.org/wiki/Quantum_computing
dxd 31.01.2017 19:40 # +1
D-Wave - вообще аналоговый оптимизатор, а не компьютер общего назначения, его в контексте криптографии вообще можно почти не бояться.
Dummy00001 31.01.2017 19:56 # 0
ЗЫ или проще говоря: если разработку нельзя в индию зааутсорсить, то это бесполезно.
guest 31.01.2017 19:57 # 0
Так вот где собака зарыта! А что такое время декогеренции?
dxd 31.01.2017 20:32 # +4
Короче, кубит живёт не в идеальном физическом вакууме, а в сраной реальной среде. И взаимодействует с любым говном. Со временем любая записанная в нём информация расплывается как тред под вайпом. И экспоненциальный спад означает, что через время t мы сможем извлечь из кубита правильный ответ только с вероятностью p (p < 1). Через время 2t - с вероятностью p^2. И так далее.
Вот это t и называется временем декогеренции. А суть эффекта в том, что если у тебя один кубит нормально жил микросекунду, а два кубита - 100 нс, то три будут жить уже 10 нс, а минимально осмысленные 16 - зептосекунду. За зептосекунду свет пролетает примерно ширину атомного ядра.
Antervis 31.01.2017 22:03 # 0
CHayT 31.01.2017 22:37 # +5
Решение: надо просто всерьёз подсадить кубиты на мморпг. Время декогеренции вырастет до периода покупки доширака и выноса мусора. Последним можно вообще пренебречь.
dxd 31.01.2017 23:31 # 0
huesto 31.01.2017 23:49 # +1
bormand 01.02.2017 00:08 # +2
dxd 01.02.2017 00:44 # +2
Dummy00001 31.01.2017 17:00 # 0
лол. это просто виртуальные регистры для реализации этого алгоритма хэширования. или вы там в теле цикла сдвига по этим регистрам не заметили?
или вы думаете что регистром может называтся только то что буквально мапится на регистры проца? - и regedit.exe предназначен для редактирования оных?
> // А вот это уже полная хуйня
да. но секурити типы любят стэк чистить. что бы нехуй.
j123123 31.01.2017 18:24 # 0
А зачем это тогда делать, чем МАССИВЫ не устраивают?
bormand 31.01.2017 18:36 # +2
j123123 31.01.2017 18:47 # 0
kipar 31.01.2017 19:00 # +1
huesto 31.01.2017 20:14 # 0
А с какого хуя ты решил что автор с какого-то хуя подумал что компилятор засунет хуйэто в регистры?
j123123 31.01.2017 21:50 # 0
Steve_Brown 01.02.2017 09:36 # 0
kipar 01.02.2017 14:05 # +1
1234 24.08.2021 00:57 # 0