Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
skywings

как работает алгоритм sha-1

29.10.2012, 12:11. Показов 3990. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как работает алгоритм sha-1 можно ли объяснять код
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
#include "stdio.h"
#include "stdlib.h"
#define kr 1000 
union u{
        unsigned long h2;
        char h3[4];
} uu;
char M[12] = {"Work for PK"};
unsigned long q, b, p, x, y, a;
unsigned long p1, mp[kr];
unsigned long k, r,h1, s, h_1;
unsigned long u1, u2, v, v1;
int i, j, j1;
/////////////////////
int simple(unsigned long m, int k){
        unsigned long n;
        int k1, pr;
        k1 = k;
        k1--; pr = 0;
        while( k1 >= 0){
                n = mp[k1];
                n = m % n;
                if(n == 0){
                        pr = 0;
                        return pr;
                }
                else
                        pr++;
                k1--;
        }
        mp[k] = m;
        return pr;
}
////////////////////////
void m_simple(){
        unsigned long m;
        i = 2;
        j = 3;
        while(j < kr){
                m = mp[j-1];
                m++;
                while(!simple(m,j)){
                        m++;
                }
                j++;
        }
}
//////////////////////////////
void p_q_a(){
        unsigned long mn;
        unsigned long k1;
        a = 2;
        do{
                mn = 1; k1 = 1;
                while(k1 != q){
                        mn *= a;
                        k1++;
                }
                a++;
        }while((mn % p) != 1);
        return;
}
/////////////////////////////
unsigned int hash(char A){
        unsigned int h, g;
        h = g = 0;
        h = (h << 4) + A;
        if( g == (h & 0xF0000000)){
                h = h ^ (g >> 24);
                h = h ^ g;
                h = h % 211;
        }
        return h;
}
 
////////////////////////////////
void main(){
        int pp1;
        unsigned long p1;
        for(i = 0; i < 12; i++){
                printf("%c ", M[i]);
        }
        printf("\n");
        mp[0] = 2; mp[1] = 3; mp[2] = 5;
        m_simple();
        printf("Vvedite celoe chislo, posle kotorogo mozhno  vzjat prostoe chislo\n");
        scanf("%i", &pp1);
        ///////////////////////////
        p1 = pp1;
        i = 0;
        while(mp[i] <= pp1)
                i++;
        q = mp[i];
        printf("q = %i \n", q);
        j = i + 1;
        while((j <= kr) && ((mp[j] % q) != 1))
                j++;
        if(j <= kr)
                p = mp[j];
        else
                return;
        printf("p = %i \n", p);
        b = p / q;
        printf("b = %i \n", b);
        p_q_a();
        printf("a = %i \n", a);
        x = rand() % q;
        printf("x = %i \n", x);
        y = 1; p1 = 1;
        while(p1 <= x){
                y *= a;
                p1++;
        }
        y = y % p;
        printf("y = %i \n", y);
        h1 = hash(M[0]);
        printf("m = %c h = %i \n", M[0], h1);
        do{
                k = rand() % q;
                r = 1; p1 = 1;
                while(p1 <= k){
                        y *= a;
                        p1++;
                }
                r = (y % p) % q;
                s = (k * h1 + x * r) % q;
        }while((r == 0) || (s == 0));
        printf("k = %i \n", k);
        printf("<m %c, r %i, s %i> \n", M[0], r, s);
        /////////////////////////////////
        uu.h2 = h1;
        h_1 = hash(uu.h3[0]);
        h_1 = (1 / h_1) % q;
        printf("h_1 %i \n", h_1);
        if((r < 0) || (r >= q)){
                printf("Error r");
                return;
        }
        if((s < 0) || (s >= q)){
                printf("Error s");
                return;
        }
        u1 = (s * h_1) % q;
        u2 = ((-r) * h_1) % q;
        printf("u1 = %i u2 %i \n", u1, u2);
        v = 1; p1 = 1;
        while(p1 <= u1){
                y *= a;
                p1++;
        }
        v1 = 1; p1 = 1;
        while(p1 <= u2){
                v1 *= y;
                p1++;
        }
        v = ((v * v1) % p) % q;
        if(v == r)
                printf("v %i = r %i \n", v, r);
        else
                printf("v %i <> r %i \n", v, r);
        return;
}
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.10.2012, 12:11
Ответы с готовыми решениями:

Алгоритм SHA-1
Здравствуйте! Нужно написать код алгоритма шифрования SHA-1. Есть вот этот псевдокод, но я не могу разобраться с чего там начинать писать,...

Алгоритм sha - 512
Пользователь вводит hash К примеру:...

Алгоритм кодирования SHA-1
Кто работал с алгоритмом кодировки Sha-1 и имеет какие-то исходники?

2
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
29.10.2012, 13:40
Цитата Сообщение от skywings Посмотреть сообщение
можно ли объяснять код
Можно. Объясняй!

Кстати, хэш-функция тут всегда возвращает остаток от деления кода символа на 211.
0
skywings
29.10.2012, 13:47
Можно большие Объясняй как работать алгоритм
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.10.2012, 13:47
Помогаю со студенческими работами здесь

Как работает алгоритм ПП рюкзака?
Здравствуйте, вот код полного перебора рюкзака. Все понимаю, кроме главного цикла, где всё высчитывается. v - объем рюкзака, n -кол- во...

Подскажите, как работает алгоритм
Задача: Вася-первоклассник, поднимаясь по лесенке из N ступенек, каждым шагов либо наступает на следующую ступеньку, либо через одну...

Как работает алгоритм Khazad
очень нужно обясните

Как работает этот алгоритм?
Объясните как работает этот алгоритм по вычислению дня недели по дате. Зачем здесь столько вычислений целых частей и остатка? Есть что ли...

Как работает генетический алгоритм
Здравствуйте, интересуют следующие вопросы: Как работает генетический алгоритм в Matlab? Как он осуществляет распараллеливание, если...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru