Февраль 2020
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
242526272829 

Календарь Календарь

Последние темы
» ROM-BIOS (монитор) "для Микро-80"
автор barsik Ср Фев 26 2020, 14:32

» Коммутатор на 12 входов и 2 выхода для УМЗЧ.
автор Viktor2312 Вт Фев 25 2020, 10:26

» Статьи, заметки, очерки, разное... Микроконтроллеры.
автор Viktor2312 Вт Фев 25 2020, 09:45

» Новинки. Книги. Часть 1.
автор Viktor2312 Вт Фев 25 2020, 02:30

» Радио-86РК: Расширение ПЗУ
автор barsik Пн Фев 24 2020, 19:28

» Язык программирования С.
автор Viktor2312 Пн Фев 17 2020, 19:02

» Радио-86РК: внешние видео-адаптеры
автор freddy Сб Фев 15 2020, 17:44

» ПЗУ F800 для РК86
автор barsik Сб Фев 08 2020, 19:08

» "PC". Статьи, заметки, очерки, разное...
автор Viktor2312 Чт Фев 06 2020, 16:07

» AVR AY плеер
автор freddy Сб Фев 01 2020, 15:18

» радиолюбительский компьютер Микро-80 - мой новодел
автор vlad6502 Ср Янв 29 2020, 01:50

» Конфиги для эмулятора EMU80 V4
автор barsik Сб Янв 25 2020, 11:42

» Амфитон 25у-002С
автор Viktor2312 Сб Янв 25 2020, 02:15

» Решил собрать радиоприёмник.
автор freddy Чт Янв 23 2020, 18:48

» Электроника. Статьи, заметки, очерки, разное...
автор Viktor2312 Пн Янв 20 2020, 14:53

» Вопрос по старой клаве Chicony 1992 года kb-5191
автор Viktor2312 Пн Янв 20 2020, 05:00

» Не включается из стэндбая телевизор ЭЛТ Сони
автор Atari1974 Пт Янв 17 2020, 18:59

» Интернет. Статьи, заметки, очерки, разное...
автор Viktor2312 Пт Янв 17 2020, 12:29

» ДР Vita Удачи!
автор Viktor2312 Пт Янв 17 2020, 08:10

» Внутрисхемный отладчик для 8080 процессора
автор freddy Чт Янв 16 2020, 19:25

» ПЭВМ "Нафаня": Обсуждение
автор barsik Ср Янв 15 2020, 22:12

» Версии RK-DOS для РК86 и Микроши
автор barsik Ср Янв 15 2020, 18:46

» Игровая приставка КРОХА
автор barsik Вт Янв 14 2020, 21:14

» CP/M для РК86 и Микроши
автор barsik Пн Янв 13 2020, 19:19

» Ethereum Classic (ETC). Криптовалюта Эфириум классик.
автор Viktor2312 Пн Янв 13 2020, 14:08

Самые активные пользователи за месяц
Viktor2312
Личная тех. тема. Vote_lcapЛичная тех. тема. Voting_barЛичная тех. тема. Vote_rcap 
freddy
Личная тех. тема. Vote_lcapЛичная тех. тема. Voting_barЛичная тех. тема. Vote_rcap 
barsik
Личная тех. тема. Vote_lcapЛичная тех. тема. Voting_barЛичная тех. тема. Vote_rcap 
Stassik
Личная тех. тема. Vote_lcapЛичная тех. тема. Voting_barЛичная тех. тема. Vote_rcap 

Поиск
 
 

Результаты :
 


Rechercher Расширенный поиск


Личная тех. тема.

Перейти вниз

Личная тех. тема. Empty Личная тех. тема.

Сообщение  Viktor2312 в Сб Июл 06 2019, 13:06

1
Данную тему можете не читать, она для разработки устройства, просто так удобно и наглядно, хранить мне данные...

_________________
"ЛП & ТИ"
Viktor2312
Viktor2312
Гуру+

Сообщения : 12244
Дата регистрации : 2012-08-10
Возраст : 41
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Личная тех. тема. Empty .

Сообщение  Viktor2312 в Сб Июл 06 2019, 13:36

2
.
Пометки:

1. # Майнер отправляет пулу nonce и хеш заданной сложности, пул подставляет этот nonce в заголовки блока и хеширует их, получил в результате тот же хеш - валидный, получил другой хеш - невалидный.
(если я как майнер состоящий в пуле, отсылаю пулу к примеру 100 nonce и соответствующих хешей, то пулл, будет пересчитывать все 100 хешей, что бы провалидировать? Тогда какой от меня смысл, если пул сам может считать эти хеши?)
# Майнер перебирает nonce, чтобы получить "красивый" хеш. Для этого нужно проделать МНОГО операций хеширования.
Пул проверяет, что присланные майнером nonce и хеш соответствуют друг другу. Это ОДНА операция хеширования.
(Как тогда майнинг пул проверит, что я реально работал и сколько работы я проделал, если я не нашел "красивый" хеш, хотя реально искал?)
# Например, сложность выставленная пулом равна 10 000, следовательно майнер будет находить соответствующий хеш в среднем за 10 000 итераций перебора nonce. Ключевое слово - в среднем. Сколько реально было итераций в конкретном случае - сугубо половые пробемы майнера и пулу на это положить, потому что в среднем будет 10 000, не смотря на то, что иной раз его можно найти с первой же итерации, а иногда не найти и за 20 000+ итераций. Как только майнер нашёл соответствующий хеш, он отправляет его и nonce пулу, а пул хеширует у себя и засчитывает майнеру 10 000 итераций. Проще говоря, пулу не нужно проверять сколько майнер сделал работы в каждом конкретном случае, потому что в среднем майнеру придётся перебирать столько, сколько требует заданная сложность, иначе он не найдёт требуемые хеши и отправлять будет нечего.

*задание содержит номер блока, ID задания, хэш предыдущего блока, минимальный и максимальный nonce для тебя





---//---

1. Создаём 8 шт. ПЗУ с организацией 1х32 для хранения начальных значений переменных h0 - h7. С одним адресным входом ADDRESS_h0 - ADDRESS_h7, дополнительным входным портом ENEBLE_h0 - ENEBLE_h7 и выходным портом DATA_OUT_h0 - DATA_OUT_h7 (31 downto 0). Описание с использованием оператора if и case. В виде отдельных компонентов, каждое ПЗУ должно быть независимым устройством на кристалле для полного распараллеливания.

Начальные значения:
h0 := 0x6A09E667 (0110 1010 0000 1001 1110 0110 0110 0111)
h1 := 0xBB67AE85 (1011 1011 0110 0111 1010 1110 1000 0101)
h2 := 0x3C6EF372 (0011 0011 0110 1110 1111 0011 0111 0010)
h3 := 0xA54FF53A (1010 0101 0100 1111 1111 0101 0011 1010)
h4 := 0x510E527F (0101 0001 0000 1110 0101 0010 0111 1111)
h5 := 0x9B05688C (1001 1011 0000 0101 0110 1000 1000 1100)
h6 := 0x1F83D9AB (0001 1111 1000 0011 1101 1001 1010 1011)
h7 := 0x5BE0CD19 (0101 1011 1110 0000 1100 1101 0001 1001)

Личная тех. тема. A_aa_v10____Личная тех. тема. A_aa_v11

Личная тех. тема. A_aa_v12____Личная тех. тема. A_aa_v13

Личная тех. тема. A_aa_v14____Личная тех. тема. A_aa_v15

Личная тех. тема. A_aa_v16____Личная тех. тема. A_aa_v17

____Создаём восемь таких элементов с соответствующими именами. Все входные порты ADDRESS_h0 - ADDRESS_h7 будут соединяться с сигналом ADDRESS_0 и изначально присваиваться значение лог.1, а порты ENEBLE_h0 - ENEBLE_h7 объединяются соединяясь с общим сигналом ENEBLE_0, который в последствии будет использоваться для включения.
____Пишем код далее:

Личная тех. тема. A_aa_v18

Личная тех. тема. A_aa_v19

Личная тех. тема. A_aa_v20

Личная тех. тема. A_aa_v21

Личная тех. тема. A_aa_v22

Личная тех. тема. A_aa_v23

Личная тех. тема. A_aa_v24

Личная тех. тема. A_aa_v25

____Добавляем в основной проект два сигнала ADDRESS_0 и ENEBLE_0, присвоив сигналу ADDRESS_0 начальное значение '1'.

Личная тех. тема. A_aa_v26

____Создаём семь 32-разрядных вектора сигналов ROM_OUT_h0 - ROM_OUT_h7.

Личная тех. тема. A_aa_v27

____Добавляем в основной проект данные сигналы ROM_OUT_h0 - ROM_OUT_h7.

Личная тех. тема. A_aa_v28

____Объявляем созданные компоненты ROM_h0 - ROM_h7 в основном проекте.

Личная тех. тема. A_aa_v29

Личная тех. тема. A_aa_v30

____Далее, реализуем наши компоненты и определим межкомпонентные связи в основном проекте.

Личная тех. тема. A_aa_v31

____Теперь необходимо будет создать 64 шт. ПЗУ с организацией 1х32 для хранения значений констант k0 - k63. Также с одним адресным входом ADDRESS_k0 - ADDRESS_k63, дополнительным входным портом ENEBLE_k0 - ENEBLE_k63 и выходным портом DATA_OUT_k0 - DATA_OUT_k63 (31 downto 0). Описание с использованием оператора if и case. В виде отдельных компонентов, каждое ПЗУ должно быть независимым устройством на кристалле для полного распараллеливания.






.


Последний раз редактировалось: Viktor2312 (Ср Ноя 27 2019, 23:05), всего редактировалось 3 раз(а)

_________________
"ЛП & ТИ"
Viktor2312
Viktor2312
Гуру+

Сообщения : 12244
Дата регистрации : 2012-08-10
Возраст : 41
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Личная тех. тема. Empty .

Сообщение  Viktor2312 в Вс Июл 07 2019, 11:17

3
.
2. Создать ПЗУ 1х32 64 шт. Подготавливаем содержимое всех ПЗУ.

2.0 (k0 - k7) Для того, чтобы не ошибиться, разобьём процесс на 8 частей по 8 шт. ПЗУ, в виду убогости человеческого мозга, сделаем это поэтапно, для исключения ошибок:

k0 := 0x428A2F98 (0100 0010 1000 1010 0010 1111 1001 1000)
k1 := 0x71374491 (0111 0001 0011 0111 0100 0100 1001 0001)
k2 := 0xB5C0FBCF (1011 0101 1100 0000 1111 1011 1100 1111)
k3 := 0xE9B5DBA5 (1110 1001 1011 0101 1101 1011 1010 0101)
k4 := 0x3956C25B (0011 1001 0101 0110 1100 0010 0101 1011)
k5 := 0x59F111F1 (0101 1001 1111 0001 0001 0001 1111 0001)
k6 := 0x923F82A4 (1001 0010 0011 1111 1000 0010 1010 0100)
k7 := 0xAB1C5ED5 (1010 1011 0001 1100 0101 1110 1101 0101)

____Каждое ПЗУ имеет вход ENEBLE_k0 - ENEBLE_k63 в данном случае эти входы не объединяются, а каждый выходит на свой отдельный сигнал ENEBLE_1 - ENEBLE_64. Для того, чтобы можно было включать каждое ПЗУ по отдельности, в нужные моменты времени. Данные сигналы временные, на данном этапе проектирования, в последствии они могут остаться, либо будут заменены на другие, с соответствующей перенумерацией.

Личная тех. тема. A_aa_v45

____Далее создаём субпроекты данных ПЗУ.

Личная тех. тема. A_aa_v33

Личная тех. тема. A_aa_v34

Личная тех. тема. A_aa_v35

Личная тех. тема. A_aa_v36

Личная тех. тема. A_aa_v37

Личная тех. тема. A_aa_v38

Личная тех. тема. A_aa_v39

Личная тех. тема. A_aa_v40

____Добавляем в основной проект сигналы ENEBLE_1 - ENEBLE_7.

Личная тех. тема. A_aa_v41

____Объявляем созданные компоненты:

Личная тех. тема. A_aa_v42

Личная тех. тема. A_aa_v43

____Добавляем сигналы ROM_OUT_k0 - ROM_OUT_k7 в основной проект.

Личная тех. тема. A_aa_v44

____Далее, реализуем наши компоненты и определим межкомпонентные связи в основном проекте.

Личная тех. тема. A_aa_v46


Личная тех. тема. A_aa_v47

____Теперь можно приступать к созданию следующих 8 шт. ПЗУ ROM_k8 - ROM_k15...





.
Viktor2312
Viktor2312
Гуру+

Сообщения : 12244
Дата регистрации : 2012-08-10
Возраст : 41
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Личная тех. тема. Empty Re: Личная тех. тема.

Сообщение  Viktor2312 в Вс Июл 07 2019, 18:40

4
.
2.1 (k8 - k15) Создаём следующие 8 шт. ПЗУ:

k8 := 0xD807AA98 (1101 1000 0000 0111 1010 1010 1001 1000)
k9 := 0x12835B01 (0001 0010 1000 0011 0101 1011 0000 0001)
k10 := 0x243185BE (0010 0100 0011 0001 1000 0101 1011 1110)
k11 := 0x550C7DC3 (0101 0101 0000 1100 0111 1101 1100 0011)
k12 := 0x72BE5D74 (0111 0010 1011 1110 0101 1101 0111 0111)
k13 := 0x80DEB1FE (1000 0000 1101 1110 1011 0001 1111 1110)
k14 := 0x9BDC06A7 (1001 1011 1101 1100 0000 0110 1010 0111)
k15 := 0xC19BF174 (1100 0001 1001 1011 1111 0001 0111 0100)

Личная тех. тема. A_aa_v48

____Создаём субпроекты.


Личная тех. тема. A_aa_v49

Личная тех. тема. A_aa_v50


Стоп. Всё придётся удалить и переделать, это не самое оптимальное решение. Создавая такие ПЗУ выходит, что оно содержит 2 32-разрядные ячейки, первая с нулями, а вторая с нужным числом. То есть по сути 50 % элементов просто не используются. Оптимальнее будет применить, например 32 элемента И (and) входы которых подключить к лог.1 или лог.0 в зависимости от требуемого значения в конкретном бите.






.
Viktor2312
Viktor2312
Гуру+

Сообщения : 12244
Дата регистрации : 2012-08-10
Возраст : 41
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Личная тех. тема. Empty .

Сообщение  Viktor2312 в Пн Июл 15 2019, 17:07

5
Итак, в виду того, что:

Инициализация переменных
(первые 32 бита дробных частей квадратных корней первых восьми простых чисел [от 2 до 19]):

h0 := 0x6A09E667
h1 := 0xBB67AE85
h2 := 0x3C6EF372
h3 := 0xA54FF53A
h4 := 0x510E527F
h5 := 0x9B05688C
h6 := 0x1F83D9AB
h7 := 0x5BE0CD19

Мы имеем начальные фиксированные значения для слов в первой итерации, пардон, в нулевой итерации...

a := h0
b := h1
c := h2
d := h3
e := h4
f := h5
g := h6
h := h7

Мы не будем это всё реализовывать в железе и тратить на это "железо", деньги и время, время на вычисления, каждый раз...

Так как:

Основной цикл:

для i от 0 до 63
Σ0 := (a rotr 2) xor (a rotr 13) xor (a rotr 22)

Для 0-й итерации, мы это сделаем в "уме", получив и b и Σ0...

Личная тех. тема. 66672510

В виндоусовском калькуляторе можно проверить, всё совпадает, и "исключающее ИЛИ" (XOR) посчитано, процесс идёт...

_________________
"ЛП & ТИ"
Viktor2312
Viktor2312
Гуру+

Сообщения : 12244
Дата регистрации : 2012-08-10
Возраст : 41
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Личная тех. тема. Empty .

Сообщение  Viktor2312 в Сб Авг 10 2019, 22:20

6
SHA-2 хеш алгоритм.

____В 1993 году NIST впервые опубликовал Стандарт Безопасного Хеша (SHA). В 1995 году этот алгоритм был пересмотрен с целью устранения некоторых начальных недостатков, а в 2001 году были предложены новые алгоритмы хеширования. Это новое семейство алгоритмов хеширования, известное как SHA-2, использует большие дайджест-сообщения, делая их более устойчивыми к возможным атакам и позволяя использовать их с большими блоками данных, вплоть до 2128 бит, например, в случае SHA512. Алгоритм хеширования SHA-2 одинаков для хэш-функций SHA256, SHA224, SHA384 и SHA512, различаясь только размером операндов, векторами инициализации и размером окончательного дайджест-сообщения.
____Далее описывается алгоритм SHA-2, применяемый к хеш-функции SHA256, после чего следует описание хеш-функции SHA512, которая отличается в основном размером операндов, используя 64-битные слова вместо 32-битных. Обратите внимание, что SHA224 и SHA384 вычисляются как SHA256 и SHA512, соответственно, с окончательным значением хеш-функции, усеченным до соответствующего размера, вектор инициализации также отличается.

Личная тех. тема. _aaau_11

____Функция хеширования SHA256: Функция хеширования SHA256 создает окончательное дайджест-сообщение из 256 битов, которое зависит от входного сообщения и состоит из нескольких блоков по 512 бит в каждом. Этот входной блок расширяется и подается на 64 цикла функции SHA256 в словах по 32 бита каждый (обозначается Wt). В каждом цикле или цикле алгоритма SHA-2 введенные данные смешиваются с текущим состоянием. Это скремблирование данных выполняется с помощью сложений и логических операций, таких как побитовые логические операции и побитовые вращения. Вычислительная структура каждого раунда этого алгоритма изображена на рисунке 1. Несколько функций, представленных на этом рисунке, описаны в Приложении I. Значение Wt является 32-разрядным словом данных для раунда t, а значение Kt представляет 32-битная константа, которая также зависит от раунда.
____32-битные значения переменных от A до H обновляются в каждом раунде, а новые значения используются в следующем раунде. Начальные значения этих переменных задаются 256-битным постоянным значением, указанным в [10], это значение устанавливается только для первого блока данных. В последовательных блоках данных используется промежуточное хеш-значение, вычисленное для предыдущего блока данных. Каждый блок 512 данных обрабатывается в течение 64 циклов, после чего значения переменных от A до H добавляются в предыдущее дайджест-сообщение для получения частичного Дайджест сообщения. Чтобы лучше проиллюстрировать этот алгоритм, представление псевдокода изображено на рисунке 2. Окончательное дайджест-сообщение (DM) для данного потока данных дается результатом последнего блока данных.

Личная тех. тема. Fig_210

____В некоторых приложениях более высокого уровня, таких как эффективная реализация кода аутентификации хеш-сообщения с ключом (HMAC) [11] или когда сообщение фрагментировано, начальное значение хеш-функции (IV) может отличаться от константы, указанной в [10]. В этих случаях переменные от A до H инициализируются переменным вектором инициализации (IV).
____Хеш-функция SHA512: вычисление хеш-функции SHA512 идентично вычислению хеш-функции SHA256, отличающейся размером операндов, которые имеют 64 бита, а не 32 бита, как для SHA256, размера дайджест-сообщения, которое имеет удвоенный размер, составляющий 512 бит, и в функциях, описанных в Приложении I. В этом Приложении также описаны функции, используемые в расписании сообщений. Значения Wt и Kt имеют 64 бита, и каждый блок данных состоит из 16 64-битных слов, имеющих в общей сложности 1024 бита.
____Расписание сообщений: В алгоритме SHA-2 вычисления, описанные на рисунке 1, выполняются для 64 раундов для SHA256 (80 раундов для SHA512), в каждом раунде 32-битное слово (или 64 бита для SHA512), полученное из промежуточного слова. используется хэш-значение Однако каждый блок данных имеет только 16 32-битных слов для SHA256 или 16 64-битных слов для SHA512, что приводит к необходимости расширения исходного блока данных для получения оставшихся слов. Это расширение выполняется вычислением, описанным в (1), где M(i)t обозначает первые 16 слов i-го блока данных.

Личная тех. тема. Iaa_110

____Заполнение сообщения: чтобы гарантировать, что входное сообщение кратно 512 битам, как того требует хеш-функция SHA256, или 1024 для хеш-функции SHA512, необходимо дополнить исходное сообщение. Дополненное сообщение состоит из сообщения, с ничего не значащими данными, и присоединённым к нему оригинальным сообщением. Эта операция может быть эффективно реализована в программном обеспечении с минимальными затратами.

Proposed Design.

____В алгоритме SHA-2 операции, которые должны быть выполнены, просты, однако зависимость этого алгоритма от данных не допускает большого распараллеливания. Каждый раунд алгоритма может быть вычислен только после того, как были вычислены значения от A до H предыдущего раунда (см. Рисунок 2), что накладывает последовательность на вычисление. Следует отметить, что в каждом раунде вычисление требуется только для вычисления значений A и E, поскольку остальные значения получаются непосредственно из значений предыдущего раунда, как показано в псевдокоде на рис.2.
____Перепланирование операций: в нашем предложении мы определили часть вычисления данного раунда t, которая может быть вычислена заранее в предыдущем раунде t − 1. Только значения, которые не зависят от значений, вычисленных в предыдущем раунде, могут быть вычислены заранее. В отличие от метода перепланирования, предложенного в [12] для алгоритма SHA1, где взаимная зависимость данных является низкой, в алгоритме SHA-2 зависимость данных является более сложной, как показано на рисунке 1. Хотя переменные B, C, D , F, G и H получены непосредственно из значений раунда, не требующих каких-либо вычислений, значения A и E требуют вычислений и зависят от всех значений. Другими словами, значения A и E для раунда t не могут быть вычислены до тех пор, пока значения для тех же переменных не будут вычислены в предыдущем раунде, как показано в (2).

Личная тех. тема. Iaa_210

____Принимая во внимание, что значение Ht + 1 задается непосредственно через Gt, которое, в свою очередь, задается посредством Ft-1, предварительный расчет H, таким образом, может быть задан как Ht + 1 = Ft-1. Поскольку значения Kt и Wt можно предварительно рассчитать и просто использовать в каждом раунде, (2) можно переписать как:

Личная тех. тема. Iaa_310

где значение δt рассчитывается в предыдущем раунде. Значение δt + 1 может быть результатом полного сложения или векторов переноса и сохранения из сложения переноса. С этим вычислительным разделением вычисление алгоритма SHA-2 может быть разделено на две части, что позволяет переназначить вычисление δ на предыдущий тактовый цикл, изображенный серой областью на рисунке 3. Таким образом, критический путь результирующего оборудования реализация может быть уменьшена. Поскольку вычисление теперь разделено на этап конвейера, вычисление SHA-2 требует дополнительного тактового цикла для выполнения всех циклов. В случае хэш-функции SHA256 необходимо 65 тактов для расчета 64 раундов. Как указано в алгоритме SHA-2 и изображено на рисунке 2, после вычисления всех циклов внутренние переменные (от A до H) должны быть добавлены к предыдущему дайджест-сообщению.
____

_________________
"ЛП & ТИ"
Viktor2312
Viktor2312
Гуру+

Сообщения : 12244
Дата регистрации : 2012-08-10
Возраст : 41
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Личная тех. тема. Empty .

Сообщение  Viktor2312 в Вс Авг 25 2019, 09:54

7
Псевдокод.

____Алгоритм использует следующие битовые операции:

ǁ — конкатенация,

+ — сложение,

and — побитовое «И»,

xor — исключающее «ИЛИ»,

shr (shift right) — логический сдвиг вправо,

rotr (rotate right) — циклический сдвиг вправо.

Пояснения:
Все переменные беззнаковые, имеют размер 32 бита и при вычислениях суммируются по модулю 232
message — исходное двоичное сообщение
m — преобразованное сообщение


Инициализация переменных
(первые 32 бита дробных частей квадратных корней первых восьми простых чисел [от 2 до 19]):


h0 := 0x6A09E667
h1 := 0xBB67AE85
h2 := 0x3C6EF372
h3 := 0xA54FF53A
h4 := 0x510E527F
h5 := 0x9B05688C
h6 := 0x1F83D9AB
h7 := 0x5BE0CD19

Таблица констант
(первые 32 бита дробных частей кубических корней первых 64 простых чисел [от 2 до 311]):


k[0..63] :=
0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2

Предварительная обработка:

m := message ǁ [единичный бит]
m := m ǁ [k нулевых бит],

где k — наименьшее неотрицательное число, такое что
(L + 1 + K) mod 512 = 448, где L — число бит в сообщении (сравнима по модулю 512 c 448)


m := m ǁ Длина(message)

- длина исходного сообщения в битах в виде 64-битного числа с порядком байтов от старшего к младшему

Далее сообщение обрабатывается последовательными порциями по 512 бит:
разбить сообщение на куски по 512 бит
для каждого куска разбить кусок на 16 слов длиной 32 бита (с порядком байтов от старшего к младшему внутри слова): w[0..15]

Сгенерировать дополнительные 48 слов:

для i от 16 до 63
s0 := (w[i-15] rotr 7) xor (w[i-15] rotr 18) xor (w[i-15] shr 3)
s1 := (w[i-2] rotr 17) xor (w[i-2] rotr 19) xor (w[i-2] shr 10)
w[i] := w[i-16] + s0 + w[i-7] + s1

Инициализация вспомогательных переменных:

a := h0
b := h1
c := h2
d := h3
e := h4
f := h5
g := h6
h := h7

Основной цикл:

для i от 0 до 63
Σ0 := (a rotr 2) xor (a rotr 13) xor (a rotr 22)
Ma := (a and b) xor (a and c) xor (b and c)
t2 := Σ0 + Ma
Σ1 := (e rotr 6) xor (e rotr 11) xor (e rotr 25)
Ch := (e and f) xor ((not e) and g)
t1 := h + Σ1 + Ch + k[i] + w[i]

h := g
g := f
f := e
e := d + t1
d := c
c := b
b := a
a := t1 + t2

Добавить полученные значения к ранее вычисленному результату:

h0 := h0 + a
h1 := h1 + b
h2 := h2 + c
h3 := h3 + d
h4 := h4 + e
h5 := h5 + f
h6 := h6 + g
h7 := h7 + h

Получить итоговое значение хеша:

digest = hash = h0 ǁ h1 ǁ h2 ǁ h3 ǁ h4 ǁ h5 ǁ h6 ǁ h7

_________________
"ЛП & ТИ"
Viktor2312
Viktor2312
Гуру+

Сообщения : 12244
Дата регистрации : 2012-08-10
Возраст : 41
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Личная тех. тема. Empty .

Сообщение  Viktor2312 в Пт Сен 20 2019, 22:13

8
для i от 16 до 63
s0 := (w[i-15] rotr 7) xor (w[i-15] rotr 18) xor (w[i-15] shr 3)
s1 := (w[i-2] rotr 17) xor (w[i-2] rotr 19) xor (w[i-2] shr 10)
w[i] := w[i-16] + s0 + w[i-7] + s1



i = 16

s0 = (w[16-15] rotr 7) xor (w[16-15] rotr 18) xor (w[16-15] shr 3)
s0 = (w[1] rotr 7) xor (w[1] rotr 18) xor (w[1] shr 3)

s1 = (w[16-2] rotr 17) xor (w[16-2] rotr 19) xor (w[16-2] shr 10)
s1 = (w[14] rotr 17) xor (w[14] rotr 19) xor (w[14] shr 10)

w[16] = w[16-16] + s0 + w[16-7] + s1
w[16] = w[0] + s0 + w[9] +s1

Входные слова: w[0], w[1], w[9], w[14]
Выходное слово: w[16]

Личная тех. тема. Rotr_710

Личная тех. тема. Rotr_110

Личная тех. тема. S0-w1-10


.

_________________
"ЛП & ТИ"
Viktor2312
Viktor2312
Гуру+

Сообщения : 12244
Дата регистрации : 2012-08-10
Возраст : 41
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Личная тех. тема. Empty НАЧАЛО.

Сообщение  Viktor2312 в Ср Ноя 27 2019, 10:18

9
.
Подводим некую черту, этим сообщением. Пора начинать сначала и ближе к практике, хоть всё до конца и не понятно, но многое понятно, те же 64 итерации, их можно уже реализовывать, а всё остальное будет на отдельных, стандартных, платах. Продумав всё, в плане расположения плат, их соединения между собой, частичного параллелизма и асинхронного принципа, опять получается какой-то монстр, так как решено реализовывать на серии 74AC у которой как вроде максимальная тактовая частота в районе 170 МГц, точно нигде не прочитал, но судя по datasheet время задержки распространения находится в районе 1...10 нс, а как оно получится на практике, время покажет. Для того, чтобы передавать на нужную плату 16 слов, это w[0]...w[15] необходимо 16 шлейфов, они будут располагаться сзади и спереди. А так как каждый шлейф занимает 55 мм, то на плате умещается 4 разъёма, с каждой стороны, итого выходит потребуется 4 платы с размерами не менее этих четырёх разъёмов плюс место для разъёма питания и крепления 10 мм, в каждом углу платы. Входные и выходные слова будут находиться слева и справа, чередуясь от платы к плате. Что же выходит, с запада на восток, 4 разъёма (55 * 4 = 220 мм) + крепления (10 *2 = 20 мм), на разъём питания оставим 20 мм и между разъёмами 5 мм промежутки (5 *4 = 20 мм). Итого: 220 + 20 + 20 +20 = 280 мм (28 см). А с юга на север 4 разъёма (55 * 4 = 220 мм) + крепления (10 *2 = 20 мм) и между разъёмами 5 мм промежутки (5 *4 = 20 мм). Итого: 220 + 20 + 20 = 260 мм (26 см). Плат всего 4 шт. на одну итерацию, соответственно 28 + 28 = 56 см и по 10 см расстояние на шлейфы и вентиляцию, 76 см будет ширина, и 26 + 26 = 52 см и по 10 см расстояние на шлейфы и вентиляцию, 72 см это глубина, и минимум 65 слоёв плат, по 2 см на каждую и по 10 см расстояние на вентиляцию и крепления. 65 * 2 = 130 см и + 20 см, итого 150 см.
Вот такие примерные размеры шкафчика 76 х 72 х 150 см. Жуть... Но будет интересно...

Плата A0-0. Условно показаны все разъёмы, но останутся только те, которые действительно нужны будут.
Личная тех. тема. Sch_ha10

Изменённая ссылка, так как пока по предыдущей у меня ничего не отображается из-за действий преступной организации РКН (роскомпозор).
Личная тех. тема. Sch_ha10

Ага, преступная организация не спит, и ссылки с http уже тоже не работают, придётся со временем всё дублировать троекратно, как минимум, задали работки на 5 лет вперёд, ну ничего, вечная борьба народа и дорвавшихся, продолжается, та же фотка, но выложенная на Яндексе:
Посмотреть

Твари всё пофигачили, как же они достали, ну ничего, мы с этим идиотизмом ещё поборемся...

Личная тех. тема. Sch_Hard-miner_v0.1575276041

Ура ! получилось, спасибо barsik за ссылку, но вот опять же вопрос, вот потрачу год или два и восстановлю, все изображения на форуме, в ручном режиме, добавив под каждым изображением копию на этом ресурсе, и где гарантия, что эта преступная организация не доберётся и до этого ресурса, никакой...


.


Последний раз редактировалось: Viktor2312 (Пн Дек 02 2019, 11:44), всего редактировалось 6 раз(а)

_________________
"ЛП & ТИ"
Viktor2312
Viktor2312
Гуру+

Сообщения : 12244
Дата регистрации : 2012-08-10
Возраст : 41
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Личная тех. тема. Empty .

Сообщение  Viktor2312 в Ср Ноя 27 2019, 10:45

10
*резерв

_________________
"ЛП & ТИ"
Viktor2312
Viktor2312
Гуру+

Сообщения : 12244
Дата регистрации : 2012-08-10
Возраст : 41
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Личная тех. тема. Empty Re: Личная тех. тема.

Сообщение  Viktor2312 в Ср Ноя 27 2019, 10:46

11
*резерв

_________________
"ЛП & ТИ"
Viktor2312
Viktor2312
Гуру+

Сообщения : 12244
Дата регистрации : 2012-08-10
Возраст : 41
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Личная тех. тема. Empty .

Сообщение  Viktor2312 в Ср Ноя 27 2019, 10:46

12
*резерв

_________________
"ЛП & ТИ"
Viktor2312
Viktor2312
Гуру+

Сообщения : 12244
Дата регистрации : 2012-08-10
Возраст : 41
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Личная тех. тема. Empty Re: Личная тех. тема.

Сообщение  Спонсируемый контент

13

Спонсируемый контент


Вернуться к началу Перейти вниз

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения