purebasic.info

PureBasic forum
Текущее время: Пн окт 22, 2018 5:35 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Сб апр 13, 2013 5:19 am 
Не в сети
док
Аватар пользователя

Зарегистрирован: Вс янв 10, 2010 1:10 pm
Сообщений: 126
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Блин, теперь sha512 из sha2.lib ругается на память.

_________________
.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб апр 13, 2013 5:58 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт дек 17, 2009 4:49 pm
Сообщений: 1230
Откуда: г. Ангарск
Благодарил (а): 2 раз.
Поблагодарили: 15 раз.
Пункты репутации: 10
Я у буржуев тырил код отсюда, переделывал под ютф. Собственно код
Код:
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
EnableExplicit
 
Procedure my_poke_s(*pointer, string.s)
 
  Protected *temp = AllocateMemory(StringByteLength(string))
  PokeS(*temp, string, -1, #PB_UTF8)
  Protected Len_mem_sourse_str = MemoryStringLength(*temp, #PB_UTF8)
  CopyMemory(*temp, *pointer, Len_mem_sourse_str)
  FreeMemory(*temp)
 
EndProcedure
 
Procedure.s encode_base_64(string.s)
 
  Protected length.l
  Protected out_length.l = 64 + 2 * Len(string)
  Protected *in_buffer = AllocateMemory(Len(string) + 1)
  Protected *out_buffer = AllocateMemory(out_length)
 
  PokeS(*in_buffer, string, Len(string), #PB_Ascii)
  length = Base64Encoder(*in_buffer, Len(string), *out_buffer, out_length)
  ProcedureReturn PeekS(*out_buffer, length, #PB_Ascii)
 
EndProcedure
 
Procedure.s decode_base_64(string.s)
 
  Protected length.l
  Protected out_length.l = 64 + 2 * Len(string)
  Protected *in_buffer = AllocateMemory(Len(string) + 1)
  Protected *out_buffer = AllocateMemory(out_length)
 
  PokeS(*in_buffer, string, Len(string), #PB_Ascii)
  length = Base64Decoder(*in_buffer, Len(string), *out_buffer, out_length)
  ProcedureReturn PeekS(*out_buffer, length, #PB_Ascii)
 
EndProcedure
 
#ipad = $36
#opad = $5c
#block_size = 64
 
Procedure xor_block(*block, value.a)
 
  Protected i.l
 
  For i = 0 To (#block_size - 1)
    PokeA(*block + i, PeekA(*block + i) ! value)
  Next
 
EndProcedure
 
Procedure hex_string_2_bin(string.s, *bin)
 
  Protected size.l
  Protected i.l
 
  size = Round(Len(string) / 2, #PB_Round_Down)
  For i = 0 To (size - 1)
    PokeA(*bin, Val("$" + Mid(string, i * 2 + 1, 2)))
    *bin = *bin + 1
  Next
 
EndProcedure
 
Procedure.s hmac_md5(key.s, text.s)
 
  Protected *i_key
  Protected *o_key
  Protected *front_part
  Protected *back_part
  Protected *text = AllocateMemory(#block_size)
  Protected fingerprint.s
  Protected *fingerprint
 
  *i_key = AllocateMemory(#block_size)
  my_poke_s(*i_key, key)
  xor_block(*i_key, #ipad)
  *back_part = AllocateMemory(#block_size + Len(text))
  CopyMemory(*i_key, *back_part, #block_size)
  my_poke_s(*back_part + #block_size, text)
  fingerprint = MD5Fingerprint(*back_part, #block_size + Len(text))
  *fingerprint = AllocateMemory(16)
  hex_string_2_bin(fingerprint, *fingerprint)
 
  *o_key = AllocateMemory(#block_size)
  my_poke_s(*o_key, key)
  xor_block(*o_key, #opad)
  *front_part = AllocateMemory(#block_size + Len(fingerprint))
  CopyMemory(*o_key, *front_part, #block_size)
  CopyMemory(*fingerprint, *front_part + #block_size, 16)
  fingerprint = MD5Fingerprint(*front_part, #block_size + 16)
  ProcedureReturn fingerprint
 
EndProcedure
 
Procedure.s hmac_sha1(key.s, text.s)
 
  Protected *i_key
  Protected *o_key
  Protected *front_part
  Protected *back_part
  Protected *text = AllocateMemory(#block_size)
  Protected fingerprint.s
  Protected *fingerprint
 
  *i_key = AllocateMemory(#block_size)
  my_poke_s(*i_key, key)
  xor_block(*i_key, #ipad)
  *back_part = AllocateMemory(#block_size + Len(text))
  CopyMemory(*i_key, *back_part, #block_size)
  my_poke_s(*back_part + #block_size, text)
  fingerprint = SHA1Fingerprint(*back_part, #block_size + Len(text))
  *fingerprint = AllocateMemory(20)
  hex_string_2_bin(fingerprint, *fingerprint)
 
  *o_key = AllocateMemory(#block_size)
  my_poke_s(*o_key, key)
  xor_block(*o_key, #opad)
  *front_part = AllocateMemory(#block_size + Len(fingerprint))
  CopyMemory(*o_key, *front_part, #block_size)
  CopyMemory(*fingerprint, *front_part + #block_size, 20)
  fingerprint = SHA1Fingerprint(*front_part, #block_size + 20)
  ProcedureReturn fingerprint
 
EndProcedure
 
Debug hmac_sha1("31011b18201328d5bD81201d887e0e89854636E9", "aaafdsfsdfs")



Тут sha1, тебе надо sha2, но по образу и подобию попробуй переделать. sha1 и sha2 вроде по алгоритму одинаковые, различие в длинне блоков, вообщем пробуй. Если сделаешь, незабудь поделиться результатом :wink:

_________________
.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб апр 13, 2013 4:06 pm 
Не в сети
док
Аватар пользователя

Зарегистрирован: Вс янв 10, 2010 1:10 pm
Сообщений: 126
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Нашел библиотеку QuickHash Library, делает именно то, что мне и нужно.
Документация здесь http://www.slavasoft.com/quickhash/help ... erview.htm
Всем спасибо.


Вложения:
quickhash.zip [556.94 KiB]
Скачиваний: 140
Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб апр 13, 2013 4:36 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11302
Благодарил (а): 4 раз.
Поблагодарили: 436 раз.
Это случайно не подойдет? http://www.purebasic.fr/english/viewtop ... 14&t=28221

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб апр 13, 2013 4:45 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт дек 17, 2009 4:49 pm
Сообщений: 1230
Откуда: г. Ангарск
Благодарил (а): 2 раз.
Поблагодарили: 15 раз.
Пункты репутации: 10
Здесь 32bit, а здесь 64bit без всяких библиотек

_________________
.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб апр 13, 2013 5:01 pm 
Не в сети
док
Аватар пользователя

Зарегистрирован: Вс янв 10, 2010 1:10 pm
Сообщений: 126
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр писал(а):
Это случайно не подойдет? http://www.purebasic.fr/english/viewtop ... 14&t=28221

Если использовать с HMAC оберткой, что я писал выше, то вполне.
lakomet писал(а):
Здесь 32bit, а здесь 64bit без всяких библиотек

Эх, пораньше бы эти ссылочки найти))


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: HMAC-SHA512
СообщениеДобавлено: Пт мар 02, 2018 2:20 pm 
Не в сети
ассистент

Зарегистрирован: Чт ноя 03, 2016 2:28 pm
Сообщений: 12
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Добрый день!
Ребята помогите ПЛЗ, необходимо реализовать шифрование HMAC-SHA512. Все выше перечисленное перепробовал, дают неверные результаты. Отзовитесь кто решил.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: HMAC-SHA512
СообщениеДобавлено: Пт мар 02, 2018 4:03 pm 
Не в сети
ассистент

Зарегистрирован: Чт ноя 03, 2016 2:28 pm
Сообщений: 12
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Нашел библиотеку с генерацией кода сразу в Пурик https://tools.chilkat.io/hmac.cshtml#macResult ,на сайте генерит правильно, вставив в IDE выдает пустую строку, не могу разобраться


Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
IncludeFile "CkCrypt2.pb"
 
Procedure ChilkatExample()
 
    crypt.i = CkCrypt2::ckCreate()
    If crypt.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf
 
    CkCrypt2::setCkMacAlgorithm(crypt, "hmac")
    CkCrypt2::setCkEncodingMode(crypt, "fingerprint")
    CkCrypt2::setCkHashAlgorithm(crypt, "SHA-512")
    success.i = CkCrypt2::ckSetMacKeyEncoded(crypt,"1afb448f45993315beb9e9e78e3715aa","ascii")
    CkCrypt2::setCkCharset(crypt, "windows-1251")
    result.s = CkCrypt2::ckMacStringENC(crypt,"hi")
 
 
    CkCrypt2::ckDispose(crypt)
 
 
    ProcedureReturn
EndProcedure


должно получиться:
34f10e41202ffea743c6d802f10144ed1c60e1462ce90b0e83a49caaa9c8d27b01f308a867b8b340090adf368f438112206aa51fc947ffb53941c04d1aeae353


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: HMAC-SHA512
СообщениеДобавлено: Пт мар 02, 2018 7:18 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1699
Откуда: Алматы
Благодарил (а): 15 раз.
Поблагодарили: 46 раз.
Пункты репутации: 5
а версия PB, которая в файле - и указана ли она там ваще? - совпадает с версией, установленной на компьютере?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: HMAC-SHA512
СообщениеДобавлено: Пн мар 05, 2018 4:55 am 
Не в сети
док
Аватар пользователя

Зарегистрирован: Сб мар 28, 2015 11:06 pm
Сообщений: 150
Откуда: Україна
Благодарил (а): 10 раз.
Поблагодарили: 11 раз.
Пункты репутации: 4
Sosed,
Код:
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
IncludeFile "CkCrypt2.pb"
 
Procedure ChilkatExample()
  crypt.i = CkCrypt2::ckCreate()
  If crypt.i = 0
    Debug "Failed to create object."
    ProcedureReturn
  EndIf
 
  success.i = CkCrypt2::ckUnlockComponent(crypt,"LinXPv.CB10299_QJvUwFEPCRoZ")
  If success <> 1
    Debug CkCrypt2::ckLastErrorText(crypt)
    Debug "unlock failed."
    CkCrypt2::ckDispose(crypt)
    ProcedureReturn
  EndIf
 
  CkCrypt2::setCkMacAlgorithm(crypt, "hmac")
  CkCrypt2::setCkEncodingMode(crypt, "hex")
  CkCrypt2::setCkHashAlgorithm(crypt, "SHA-512")
  success.i = CkCrypt2::ckSetMacKeyEncoded(crypt,"1afb448f45993315beb9e9e78e3715aa","ascii")
  CkCrypt2::setCkCharset(crypt, "windows-1251")
  result.s = CkCrypt2::ckMacStringENC(crypt,"hi")
 
  Debug LCase(result)
 
  CkCrypt2::ckDispose(crypt)
  ProcedureReturn
EndProcedure
 
ChilkatExample()


Выхлоп: 34f10e41202ffea743c6d802f10144ed1c60e1462ce90b0e83a49caaa9c8d27b01f308a867b8b340090adf368f438112206aa51fc947ffb53941c04d1aeae353


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: HMAC-SHA512
СообщениеДобавлено: Ср мар 07, 2018 8:46 am 
Не в сети
ассистент

Зарегистрирован: Чт ноя 03, 2016 2:28 pm
Сообщений: 12
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
LinXP, низкий тебе поклон, то что надо.
Теперь стал другой вопрос, это шифрование надо компилировать в Юникоде, и работает она в одной упряжке с Curl-библиотекой, которая нормально работает только если компилируется как обычный текст, как их можно подружить??? Пробовал засунуть шифрование в DLL, соответственно результата ноль. Других идей нет...??
А случаем, эта Chilkat-библиотека не может работать как Curl? Необходимо формировать HTTPS-запросы. Есть ли где нибудь нормальное описание??


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: HMAC-SHA512
СообщениеДобавлено: Ср мар 07, 2018 9:02 pm 
Не в сети
док
Аватар пользователя

Зарегистрирован: Сб мар 28, 2015 11:06 pm
Сообщений: 150
Откуда: Україна
Благодарил (а): 10 раз.
Поблагодарили: 11 раз.
Пункты репутации: 4
Дока https://www.chilkatsoft.com/refdoc/pbHttpRef.html
Примеры https://www.example-code.com/purebasic/http.asp


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB