Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 5
1

Хэширование пароля

22.11.2013, 15:25. Показов 3357. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, люди добрые. Помогите нубу, имеется php скприпт, который обрабатывает пароль и сохраняет его в базу данных, каким образом в делфи можно так же обработать переменную password?

PHP
1
2
3
4
    $passwprd = stripslashes($password);
    $password = htmlspecialchars($password);
    $password = trim($password);
    $password = hash('sha256', $password);
Добавлено через 31 минуту
Ладно результаты первых 3-х функций можно обработать в циклах, но как в делфи хешировать строку в SHA256?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.11.2013, 15:25
Ответы с готовыми решениями:

Хэширование и методы разрешения коллизий
Помогите переделать программу. В моей программе используется метод разрешения коллизий "Метод...

Хэширование пароля
Встала задача хранить пароли авторизации пользователей в хэш виде. Почитал в Интернете, понял, что...

Хэширование пароля
Добрый вечер. Есть рабочая программа. Необходимо, чтобы пароль добавлялся в базу данных...

Хэширование
Здравствуйте, вот прям вообще не понимаю, что нужно делать и что есть что и где :D....

12
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
22.11.2013, 19:05 2
Цитата Сообщение от max161992 Посмотреть сообщение
SHA256
Это один из криптоалгоритмов. Если мне не изменяет память, то в Делфи имеются специальные компоненты криптования. Поищите в сети.
0
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 5
22.11.2013, 19:27  [ТС] 3
Думаю, я уже достаточно искал
0
191 / 50 / 10
Регистрация: 27.09.2013
Сообщений: 516
Записей в блоге: 4
22.11.2013, 19:34 4
max161992, значит плохо искали

включите эти модули в проект: IdGlobal, IdHash, IdHashMessageDigest
(они вроде бы в 2010 и выше есть, по крайней мере в XE точно есть)
и хэшируйте сколько захотите
1
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
22.11.2013, 19:39 5
Цитата Сообщение от max161992 Посмотреть сообщение
Думаю, я уже достаточно искал
А я вот по запросу "криптование SHA256 делфи" нашел кучу информации.
0
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 5
22.11.2013, 19:59  [ТС] 6
Да и я нашел кучу ненужной информации
0
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
22.11.2013, 20:00 7
Вот я нашел сишный код (можно переделать, на крайняк попросить профи из ветки Си сделать dll-ку)
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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
/*
 * An implementation of the SHA-256 hash function, this is endian neutral
 * so should work just about anywhere.
 *
 * This code works much like the MD5 code provided by RSA.  You sha_init()
 * a "sha_state" then sha_process() the bytes you want and sha_done() to get
 * the output.
 *
 * Revised Code:  Complies to SHA-256 standard now.
 *
 * Tom St Denis -- [url]http://tomstdenis.home.dhs.org[/url]
 * */
#include <stdio.h>
 
typedef struct {
    unsigned long state[8], length, curlen;
    unsigned char buf[64];
}
sha_state;
 
/* the K array */
static const unsigned long K[64] = {
    0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL, 0x3956c25bUL,
    0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL, 0xd807aa98UL, 0x12835b01UL,
    0x243185beUL, 0x550c7dc3UL, 0x72be5d74UL, 0x80deb1feUL, 0x9bdc06a7UL,
    0xc19bf174UL, 0xe49b69c1UL, 0xefbe4786UL, 0x0fc19dc6UL, 0x240ca1ccUL,
    0x2de92c6fUL, 0x4a7484aaUL, 0x5cb0a9dcUL, 0x76f988daUL, 0x983e5152UL,
    0xa831c66dUL, 0xb00327c8UL, 0xbf597fc7UL, 0xc6e00bf3UL, 0xd5a79147UL,
    0x06ca6351UL, 0x14292967UL, 0x27b70a85UL, 0x2e1b2138UL, 0x4d2c6dfcUL,
    0x53380d13UL, 0x650a7354UL, 0x766a0abbUL, 0x81c2c92eUL, 0x92722c85UL,
    0xa2bfe8a1UL, 0xa81a664bUL, 0xc24b8b70UL, 0xc76c51a3UL, 0xd192e819UL,
    0xd6990624UL, 0xf40e3585UL, 0x106aa070UL, 0x19a4c116UL, 0x1e376c08UL,
    0x2748774cUL, 0x34b0bcb5UL, 0x391c0cb3UL, 0x4ed8aa4aUL, 0x5b9cca4fUL,
    0x682e6ff3UL, 0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL,
    0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL
};
 
/* Various logical functions */
#define Ch(x,y,z)    ((x & y) ^ (~x & z))
#define Maj(x,y,z)  ((x & y) ^ (x & z) ^ (y & z))
#define S(x, n)        (((x)>>((n)&31))|((x)<<(32-((n)&31))))
#define R(x, n)        ((x)>>(n))
#define Sigma0(x)    (S(x, 2) ^ S(x, 13) ^ S(x, 22))
#define Sigma1(x)    (S(x, 6) ^ S(x, 11) ^ S(x, 25))
#define Gamma0(x)    (S(x, 7) ^ S(x, 18) ^ R(x, 3))
#define Gamma1(x)    (S(x, 17) ^ S(x, 19) ^ R(x, 10))
 
/* compress 512-bits */
static void sha_compress(sha_state * md)
{
    unsigned long S[8], W[64], t0, t1;
    int i;
 
    /* copy state into S */
    for (i = 0; i < 8; i++)
        S[i] = md->state[i];
 
    /* copy the state into 512-bits into W[0..15] */
    for (i = 0; i < 16; i++)
        W[i] = (((unsigned long) md->buf[(4 * i) + 0]) << 24) |
            (((unsigned long) md->buf[(4 * i) + 1]) << 16) |
            (((unsigned long) md->buf[(4 * i) + 2]) << 8) |
            (((unsigned long) md->buf[(4 * i) + 3]));
 
    /* fill W[16..63] */
    for (i = 16; i < 64; i++)
        W[i] = Gamma1(W[i - 2]) + W[i - 7] + Gamma0(W[i - 15]) + W[i - 16];
 
    /* Compress */
    for (i = 0; i < 64; i++) {
        t0 = S[7] + Sigma1(S[4]) + Ch(S[4], S[5], S[6]) + K[i] + W[i];
        t1 = Sigma0(S[0]) + Maj(S[0], S[1], S[2]);
        S[7] = S[6];
        S[6] = S[5];
        S[5] = S[4];
        S[4] = S[3] + t0;
        S[3] = S[2];
        S[2] = S[1];
        S[1] = S[0];
        S[0] = t0 + t1;
    }
 
    /* feedback */
    for (i = 0; i < 8; i++)
        md->state[i] += S[i];
}
 
/* init the SHA state */
void sha_init(sha_state * md)
{
    md->curlen = md->length = 0;
    md->state[0] = 0x6A09E667UL;
    md->state[1] = 0xBB67AE85UL;
    md->state[2] = 0x3C6EF372UL;
    md->state[3] = 0xA54FF53AUL;
    md->state[4] = 0x510E527FUL;
    md->state[5] = 0x9B05688CUL;
    md->state[6] = 0x1F83D9ABUL;
    md->state[7] = 0x5BE0CD19UL;
}
 
void sha_process(sha_state * md, unsigned char *buf, int len)
{
    while (len--) {
        /* copy byte */
        md->buf[md->curlen++] = *buf++;
 
        /* is 64 bytes full? */
        if (md->curlen == 64) {
            sha_compress(md);
            md->length += 512;
            md->curlen = 0;
        }
    }
}
 
void sha_done(sha_state * md, unsigned char *hash)
{
    int i;
 
    /* increase the length of the message */
    md->length += md->curlen * 8;
 
    /* append the '1' bit */
    md->buf[md->curlen++] = 0x80;
 
    /* if the length is currenlly above 56 bytes we append zeros
                               * then compress.  Then we can fall back to padding zeros and length
                               * encoding like normal.
                             */
    if (md->curlen >= 56) {
        for (; md->curlen < 64;)
            md->buf[md->curlen++] = 0;
        sha_compress(md);
        md->curlen = 0;
    }
 
    /* pad upto 56 bytes of zeroes */
    for (; md->curlen < 56;)
        md->buf[md->curlen++] = 0;
 
    /* since all messages are under 2^32 bits we mark the top bits zero */
    for (i = 56; i < 60; i++)
        md->buf[i] = 0;
 
    /* append length */
    for (i = 60; i < 64; i++)
        md->buf[i] = (md->length >> ((63 - i) * 8)) & 255;
    sha_compress(md);
 
    /* copy output */
    for (i = 0; i < 32; i++)
        hash[i] = (md->state[i >> 2] >> (((3 - i) & 3) << 3)) & 255;
}
 
/* sha-256 a block of memory */
void sha_memory(unsigned char *buf, int len, unsigned char *hash)
{
    sha_state md;
 
    sha_init(&md);
    sha_process(&md, buf, len);
    sha_done(&md, hash);
}
 
/* sha-256 a file, return 1 if ok */
int sha_file(unsigned char *filename, unsigned char *hash)
{
    unsigned char buf[512];
    int i;
    FILE *in;
    sha_state md;
 
    sha_init(&md);
    in = fopen(filename, "rb");
    if (!in)
        return 0;
    do {
        i = fread(buf, 1, 512, in);
        sha_process(&md, buf, i);
    }
    while (i == 512);
    sha_done(&md, hash);
    fclose(in);
    return 1;
}
 
int main(int argc, char **argv)
{
    int i, i2;
    unsigned char buf[32];
 
    if (argc == 1) {
        printf("Usage:\n%s: file1 [file2 file3 ...]\n", argv[0]);
        return 0;
    }
 
    for (i2 = 1; i2 < argc; i2++)
        if (sha_file(argv[i2], buf)) {
            printf("%24s: ", argv[i2]);
            for (i = 0; i < 32;) {
                printf("%02x", buf[i]);
                if (!(++i & 3))
                    printf(" ");
                if (i == 16)
                    printf("\n%26s", "");
 
            }
            printf("\n");
        }
    else
        printf("%20s: file not found.\n", argv[i2]);
    return 0;
}
0
4253 / 2949 / 688
Регистрация: 08.06.2007
Сообщений: 9,855
Записей в блоге: 4
22.11.2013, 20:12 8
Зачем dll-ку? Через Builder сделать obj, а затем на делфи сделать tpu
0
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
22.11.2013, 20:51 9
Вот я у себя нашел пакеты криптоалгоритмов.
Вложения
Тип файла: rar dcpcrypt2.rar (184.4 Кб, 58 просмотров)
1
Заблокирован
22.11.2013, 21:11 10
CryptoAPI
0
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 5
23.11.2013, 11:01  [ТС] 11
CryptoAPI нет в XE2, может кто-нибудь показать, как пользоваться модулями IdGlobal, IdHash и IdHashMessageDigest?
Например, хешировать строку X в sha256?
0
Заблокирован
23.11.2013, 13:13 12
http://ru.wikipedia.org/wiki/CryptoAPI
0
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 5
23.11.2013, 15:37  [ТС] 13
Спасибо, мне очень помогла ваша ссылка.

Добавлено через 1 час 43 минуты
Всем спасибо, разобрался, вопрос снимается.
0
23.11.2013, 15:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2013, 15:37
Помогаю со студенческими работами здесь

Хэширование
Добрый день, коллеги! Вопрос в следующем, есть ли готовая реализация на 1С алгоритма хэширования...

Хэширование
«Дана таблица текстовой базы данных с полями фиксированной ширины. Произвести хэширование по двум...

Хэширование строк. c++
Доброе время суток! Пишу программу для хэширования строк (свёртка 2). #include &lt;iostream&gt;...

Трай-хэширование
Расскажите пожалуйста что такое trie -хэширование . Или где можно взять информацию о нем


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru