Доброго всем дня!
Вот понадобилась такая функция HMAC SHA-256
Кто чем пользуется?
Дайте наводку
RFC 4634 прочел, но, может, у кого есть готовая dll?
SWIFT ссылается на RFC2104 ('HMAC SHA-256 is based on RFC2104'), только вместо md5 надо SHA-256...
нужны
SHA256_Init
SHA256_update
SHA256_final
по аналогии с md5
HMAC SHA-256
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
HMAC SHA-256
Все эти вещи лучше (проще) делать через скрипты, т.к. много готовых примеров.
Закатывать это всё в DLL и отлаживать - это путь достойный самурая.
А если раз, два и в кассу (как я) - то прикрепил примеры работы с CryptoPro.
Кстати, до сих работают по всему Югу РФ, как и программа на Clarion 5.
Сам в шоке.
Закатывать это всё в DLL и отлаживать - это путь достойный самурая.
А если раз, два и в кассу (как я) - то прикрепил примеры работы с CryptoPro.
Кстати, до сих работают по всему Югу РФ, как и программа на Clarion 5.
Сам в шоке.
- Вложения
-
- remnant.zip
- Примеры скриптов для CryptoPro
- (5.23 КБ) 119 скачиваний
За теми кто отстал - не возвращаться. (С) Кодекс
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2329
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Поблагодарили: 18 раз
HMAC SHA-256
Кажется, на форуме была библиотека со всем этим...
Это я только кажусь дураком! На самом деле я полный идиот!
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
HMAC SHA-256
У меня есть HMAC_SHA1
и есть SHA256
Т.е. чтобы получить HMAC_SHA256 надо скрестить две функции в третью ) Добавить какой-нито EVP_SHA256()
Код: Выделить всё
HMAC_SHA1 procedure(string str_,string key_)
LOC:Ret CSTRING(41)
LOC:HMAC CSTRING(21)
CODE
LOC:HMAC=HMAC(EVP_sha1(),address(key_),len(clip(key_)),address(Str_),len(clip(Str_)),0,0)
loop i# = 1 to 20
LOC:Ret = LOC:Ret & bytetohex(val(LOC:HMAC[i#]), 1)
end
return LOC:Ret
Код: Выделить всё
Hash_SHA256 procedure(string str_)
LOC:Ret CSTRING(65)
LOC:SHA256 CSTRING(33)
CODE
SHA256(address(Str_),len(clip(Str_)),address(LOC:SHA256))
loop i# = 1 to 32
LOC:Ret = LOC:Ret & bytetohex(val(LOC:SHA256[i#]), 1)
end
return LOC:Ret
Код: Выделить всё
MODULE('libeay32.dll')
EVP_sha1(),LONG,RAW,C,NAME('EVP_sha1')
HMAC(LONG EVP, LONG secret, LONG secretlen, LONG buffer, LONG bufferlen, LONG md, LONG mdlen),*CSTRING,RAW,C,NAME('HMAC')
SHA1(LONG buffer, LONG bufferlen, LONG outstr),RAW,C,NAME('SHA1')
SHA256(LONG buffer, LONG bufferlen, LONG outstr),RAW,C,NAME('SHA256')
MD5(LONG buffer, LONG bufferlen, LONG outstr),RAW,C,NAME('MD5')
HMAC SHA-256
Вот моя HMAC но для MD5
Опять же, мне надо аналогичные
SHA256_Init
SHA256_update
SHA256_final
(в Сигнатурской dll нашел, но нет прототипов - буду опять же по аналогии пробовать)
Опять же, мне надо аналогичные
SHA256_Init
SHA256_update
SHA256_final
(в Сигнатурской dll нашел, но нет прототипов - буду опять же по аналогии пробовать)
Код: Выделить всё
tcMD5.mHMAC function(long p_Text, long p_Text_len, long p_key, long p_key_len, long p_digest)
gMD5_CTX group(tgMD5_CTX).
k_ipad byte,dim(65)
k_opad byte,dim(65)
loc:i long
code
memset(address(k_ipad), 0, size(k_ipad) )
memset(address(k_opad), 0, size(k_opad) )
MemCpy(address(k_ipad), p_key, p_key_len)
MemCpy(address(k_opad), p_key, p_key_len)
loop loc:i = 1 to 64
k_ipad[loc:i] = bxor(k_ipad[loc:i], 036h)
k_opad[loc:i] = bxor(k_opad[loc:i], 05Ch)
end
self.mMD5Init (gMD5_CTX)
self.mMD5Update(gMD5_CTX, address(k_ipad), 64)
self.mMD5Update(gMD5_CTX, p_Text, p_Text_len)
self.mMD5Final (p_digest, gMD5_CTX )
self.mMD5Init (gMD5_CTX)
self.mMD5Update(gMD5_CTX, address(k_opad), 64)
self.mMD5Update(gMD5_CTX, p_digest, 16)
self.mMD5Final (p_digest, gMD5_CTX )
return(0)