Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Реализация SHA-256 C# (Не методами .NET)

32K
10 мая 2012 года
LawManiak
76 / / 24.10.2011
Доброго времени суток. Помогите найти реализации SHA-256 на языке C#. Использование встроенных методов получения хеша запрещено. Никак не могу найти...
277
11 мая 2012 года
arrjj
1.7K / / 26.01.2011
http://ru.wikipedia.org/wiki/RSA <== че найти то не можешь?
32K
11 мая 2012 года
LawManiak
76 / / 24.10.2011
я бы понял ссылку на http://ru.wikipedia.org/wiki/SHA-2
где как бы приведен псевдокод, но при чем тут RSA?
277
11 мая 2012 года
arrjj
1.7K / / 26.01.2011
а ну да :D невыспался прост :D
Так тем более что не получается то?
32K
13 мая 2012 года
LawManiak
76 / / 24.10.2011
Не до конца в псевдокдоке понял как реализовать некоторые моменты, сейчас нашел пример на Bouncy Castle, буду ковырять...
32K
13 мая 2012 года
LawManiak
76 / / 24.10.2011
Прикрепленные файлы почему-то не отображаются....
http://clck.ru/d/NYwPGqcf14buU

Никак не разберусь какие методы здесь делают:

Код:
Предварительная обработка:
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]
277
14 мая 2012 года
arrjj
1.7K / / 26.01.2011
Цитата: LawManiak

 
Код:
Предварительная обработка:
m := message ǁ [единичный бит]
m := m ǁ [k нулевых бит], где k — К наименшее неотрицательное число, такое что
                ( L + 1 + K ) mod 512 = 448, где L- число бит в сообщении (сравнима по модулю 512 c 448)
m := m ǁ Длина(message) — длина исходного сообщения в битах в виде 64-битного числа
           с порядком байтов от старшего к младшему


К сообщению добавляем 1 бит 1 (единица), дополняем нулевыми битами (0) так чтобы длина сообщения (бит) по модулю 512 была 448. Добавляем в сообщение его длину.

f.e.:

Исходное сообщение
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' (длина 440 (55*8) бит)
двоичное представление:
'01000001 01000001 01000001 01000001 .... 01000001'
добавляем в конец 1.
'01000001 01000001 01000001 01000001 .... 01000001 1' длина 441
добавляем в конец нули чтобы получилась длина 448 по модулю 512 (448 , 512+448 , 1024+448...) короче выравниваем до 512 бит, но чтоб осталось место под длину сообщения.
'01000001 01000001 01000001 01000001 .... 01000001 10000000' длина 448
добавляем в конец длину исходного сообщения (64 бита).
'01000001 01000001 01000001 01000001 .... 01000001 10000000 00000000 00000000 00000000 00000000 00000000 00000000 00000001 10111000' длина 512

32K
14 мая 2012 года
LawManiak
76 / / 24.10.2011
подскажешь как преобразовать текст в двоичное представление (желательно тоже в виде string) и обратно?
277
14 мая 2012 года
arrjj
1.7K / / 26.01.2011
Тут вроде было.
32K
14 мая 2012 года
LawManiak
76 / / 24.10.2011
Уже воспользовался :) Спасибо, в принципе нашел все что нужно
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог