반응형
  • 숨쉬는 공부방
    • Security
      • SHA
    • Hardware Security
    • Verilog HDL
    • ─── ✿ ───
      • IT
      • 이것저것

블로그 메뉴

  • 홈
  • 모든 글
  • 방명록

인기 글

최근 글

태그

  • 순차회로
  • SHA256
  • 설계
  • SHA-256
  • Modelsim
  • Verilog
  • 조합회로
  • FSM
  • C코드
  • KISA

hELLO · Designed By 정상우.
숨.
Security/SHA

[SHA-256] 코드 및 알고리즘 분석 - (2)

[SHA-256] 코드 및 알고리즘 분석 - (2)
Security/SHA

[SHA-256] 코드 및 알고리즘 분석 - (2)

2021. 7. 13. 14:49

이전 포스팅 글에서는 SHA-256의 헤더 파일을 분석하였다.

이번에는 KISA에서 제공한 SHA-256의 소스 파일을 분석하겠다.

(전체 코드는 KSIA에서 다운로드할 수 있습니다.)

 


1. 소스파일

SHA-256 알고리즘

1.1. SHA256_Encrpyt()

void SHA256_Encrpyt( IN const BYTE *pszMessage, IN UINT uPlainTextLen, OUT BYTE *pszDigest )
{
	SHA256_INFO info;

	SHA256_Init( &info );

	SHA256_Process( &info, pszMessage, uPlainTextLen );

	SHA256_Close( &info, pszDigest );
}

크게 위의 그림과 같이 SHA256_Encrpyt() 함수가 진행된다.

① SHA256_Init()을 실행하여 초기값을 설정하고

② SHA256_Process()를 실행하여 평문 메시지를 512bit 크기씩 블록으로 나누어 압축함수를 실행한다.

③ 마지막으로 SHA256_Close()를 실행함으로써 마지막 블록에 대한 압축함수를 통해 256bit의 해시값을 생성하게 된다.

압축함수는 SHA256_Transform()을 말한다. 이는 해시값을 생성하는 작업을 실행한다.

 

 

1.2. SHA256_Init()

void SHA256_Init( OUT SHA256_INFO *Info )
{
	Info->uChainVar[0] = 0x6a09e667;
	Info->uChainVar[1] = 0xbb67ae85;
	Info->uChainVar[2] = 0x3c6ef372;
	Info->uChainVar[3] = 0xa54ff53a;
	Info->uChainVar[4] = 0x510e527f;
	Info->uChainVar[5] = 0x9b05688c;
	Info->uChainVar[6] = 0x1f83d9ab;
	Info->uChainVar[7] = 0x5be0cd19;

	Info->uHighLength = Info->uLowLength = 0;
}

연쇄변수와 길이변수를 초기화하는 함수이다.

헤더파일에서 정의한 구조체의 변수인 uChainVar와 uHighLength, uLowLength의 초기값을 설정한다.

 

uChainVar의 배열이 7번까지인 이유?

#define SHA256_DIGEST_BLOCKLEN 64

UINT uChainVar[SHA256_DIGEST_VALUELEN / 4];

 

헤더파일을 보면 다음과 같이 정의되어 있다.

uChainVar[64/4]가 되어 uChainVar[8]이 된다.

 

 


미처 다 설명하지 못한 함수는 다음 글에서 이어서 설명하도록 하겠다.


- 출처 -

https://seed.kisa.or.kr/kisa/Board/21/detailView.do

https://www.di-mgt.com.au/sha_testvectors.html#FIPS-180

'Security > SHA' 카테고리의 다른 글

[SHA-256] 코드 및 알고리즘 분석 - (5)  (0) 2021.07.16
[SHA-256] 코드 및 알고리즘 분석 - (4)  (0) 2021.07.14
[SHA-256] 코드 및 알고리즘 분석 - (3)  (0) 2021.07.14
[SHA-256] 코드 및 알고리즘 분석 - (1)  (0) 2021.07.12
SHA-256 개념 간단 설명  (0) 2021.07.12
  • 1. 소스파일
'Security/SHA' 카테고리의 다른 글
  • [SHA-256] 코드 및 알고리즘 분석 - (4)
  • [SHA-256] 코드 및 알고리즘 분석 - (3)
  • [SHA-256] 코드 및 알고리즘 분석 - (1)
  • SHA-256 개념 간단 설명
숨.
숨.

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.