Страница 1 из 1
					
				HMAC SHA-256
				Добавлено: 22 Ноябрь 2021, 17:00
				 IKSoft
				Доброго всем дня!
Вот понадобилась такая функция 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
				Добавлено: 22 Ноябрь 2021, 20:03
				 Игорь Столяров
				Все эти вещи лучше (проще) делать через скрипты, т.к. много готовых примеров.
Закатывать это всё в DLL и отлаживать - это путь достойный самурая. 

А если раз, два и в кассу (как я) - то прикрепил примеры работы с CryptoPro.
Кстати, до сих работают по всему Югу РФ, как и программа на Clarion 5. 
Сам в шоке. 

 
			 
			
					
				HMAC SHA-256
				Добавлено: 23 Ноябрь 2021, 15:03
				 Губин Игорь
				Кажется, на форуме была библиотека со всем этим...
			 
			
					
				HMAC SHA-256
				Добавлено: 23 Ноябрь 2021, 22:17
				 RaFaeL
				У меня есть HMAC_SHA1
Код: Выделить всё
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
и есть SHA256
Код: Выделить всё
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
Т.е. чтобы получить HMAC_SHA256 надо скрестить две функции в третью ) Добавить какой-нито EVP_SHA256()
Код: Выделить всё
    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
				Добавлено: 24 Ноябрь 2021, 16:18
				 IKSoft
				Вот моя HMAC но для MD5
Опять же, мне надо аналогичные
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)