Доброго всем дня!
Вот понадобилась такая функция 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 который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Игорь Столяров
 - Ветеран движения
 - Сообщения: 8269
 - Зарегистрирован: 07 Июль 2005, 10:19
 - Откуда: г. Ростов-на-ДоМу
 - Благодарил (а): 34 раза
 - Поблагодарили: 106 раз
 
HMAC SHA-256
Все эти вещи лучше (проще) делать через скрипты, т.к. много готовых примеров.
Закатывать это всё в DLL и отлаживать - это путь достойный самурая.
А если раз, два и в кассу (как я) - то прикрепил примеры работы с CryptoPro.
Кстати, до сих работают по всему Югу РФ, как и программа на Clarion 5.
Сам в шоке.
			
							Закатывать это всё в DLL и отлаживать - это путь достойный самурая.
А если раз, два и в кассу (как я) - то прикрепил примеры работы с CryptoPro.
Кстати, до сих работают по всему Югу РФ, как и программа на Clarion 5.
Сам в шоке.
- Вложения
 - 
			
		
		
				
- remnant.zip
 - Примеры скриптов для CryptoPro
 - (5.23 КБ) 292 скачивания
 
 
За теми, кто отстал, не возвращаться ! 
 Кодекс
			
						- Губин Игорь
 - Шубуршун
 - Сообщения: 2680
 - Зарегистрирован: 16 Сентябрь 2005, 16:35
 - Откуда: Москва
 - Благодарил (а): 5 раз
 - Поблагодарили: 29 раз
 
HMAC SHA-256
Кажется, на форуме была библиотека со всем этим...
			
			
									
						Это я только кажусь дураком! На самом деле я полный идиот!
			
						- RaFaeL
 - ✯ Ветеран ✯
 - Сообщения: 1417
 - Зарегистрирован: 24 Март 2009, 17:59
 - Откуда: НН
 - Благодарил (а): 12 раз
 - Поблагодарили: 2 раза
 - Контактная информация:
 
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)