*JIM MCKEETH가 2018년 5월 11일 자신의 블로그에 올린 자료를 번역해 놓은 것입니다.

 
 
 
1.png

암호화와 압축에 관심이 있었지만 그래도 아마 가장 관심 갖고 좋아하는 것은  
암호화 해시 함수  
것입니다해시 함수는 모든 크기의 입력을 받아 항상 동일한
크기의 출력을 생성하는 단방향 알고리즘입니다.

단방향은 정보  손실이 발생합니다 -- 출력에서 입력으로 다시 쉽게 갈 수 없습니다.

암호화 해시는 해시 함수의 보다 안전한 버전입니 다.데이터가 수정되지 않았음을
확인하기 위해 서명하는 데
가장  자주 사용됩니다. 

 

위키백과에 따르면 이상적인 암호화 해시 함수에는 5 가지 주요 속성이 있습니다.

  • 동일한 메시지가 동일한 해시를 유발하도록 결정론적입니다.

     

  • 주어진 메시지에 대한 해시 값을 계산하는 것이 빠릅니다

     

  • 가능한 모든 메시지를 시도하는 것 외에는 해시 값에서 메시지를 생성하는 것은 불가능합니다

     

  • 메시지를 조금만 변경하면 해시 값이 너무 넓어 져서 새 해시 값이 이전 해시 값과 상관 관계가 없어 보입니다.

     

  • 동일한 해시 값을 가진 두 개의 서로 다른 메시지를 찾는 것은 불가능합니다.

 

(위 이미지: SHA 제품군 아이콘(by Uwe Martens) - CC BY-SA 4.0)

 

 

2.png

 

메시지 다이제스트 계열의 암호화 해시는 자주 사용하던 해시 알고리즘이었지만 불안한 점들이 발견되었습니다.
이제 SHA가 현대 암호의 주요 방법으로 여겨집니다.

 

해시 지원의 기초는 2009년 출시 때 RTL에서 처음으로 시작되었지만 XE8 (2015)에는 MD5, SHA-1 Bob Jenkins 해시를 지원하는 System.Hash 유닛이 있습니다. 그런 다음 10.0 시애틀 (2015)에서 SHA-2 지원으로 확장되었습니다. 가장 최근에는 10.2 Tokyo (2017)에서 원래 바이트 입력 외에 문자열 또는 스트림을 허용하도록 해시 함수가 확장되었습니다.

 

SHA 제품군에는 SHA-0, SHA-1, SHA-2 SHA-3 해시제품 군이 포함됩니다. SHA-0은 더 이상 사용되지 않으며 SHA-3 SHA-2의 향상된 기능입니다. 실제로 SHA-1 또는 SHA-2를 사용하는 대부분의 해시를 볼 수 있습니다. SHA-1은 항상 160 비트 (20 바이트) 해시 (다이제스트)를 생성하지만 SHA-2 224, 256, 384 512 비트 출력을 포함하므로 더 안전하고 유연합니다. SHA 256 51232 비트 및 64 비트 워드 크기 해시 알고리즘을 나타냅니다. SHA-224 SHA-384 서로 다른 초기값을 가지고 계산한 SHA-256 SHA-512 해시값을 최종 해시값 길이에 맞춰 잘라낸 것이다.

 

C ++ 빌더와 델파이에서는 어떻게 사용하는지 궁금하실 것입니다. System.Hash 유닛을 포함하고 나면 THashSHA2 클래스의 메소드를 사용하여 다이제스트를 작성할 수 있습니다. GetHashString을 사용하는 방법을 설명 하겠지만 다른 변형도 사용할 수 있습니다. GetHashString은 문자열 또는 스트림을 취해 해시의 16 진수 문자열을 반환합니다.

 

C ++ 빌더 코드는 다음과 같습니다:

 

Edit512->Text = THashSHA2::GetHashString(

    EditMessage->Text,

    THashSHA2::TSHA2Version::SHA512);

 

 델파이에서의 코드는 다음과 같습니다:

Edit512.Text := THashSHA2.GetHashString(

    EditMessage.Text,

    THashSHA2.TSHA2Version.SHA512).ToUpper;

 

제가 제공하는 문서에서 모든 다른 해시를 생성하는 간단한 샘플 앱을 만들었습니다. FireMonkey 앱이므로 모든 플랫폼에서 작동하지만 해시 코드는 모든 유형의 앱에서 작동합니다. C ++과 델파이 버전이 모두 포함되어 있습니다.

TRB50R.png

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 14387
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13023
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 15532
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 21064
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 22297
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 17933
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 38228
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 173741
26 무료 데이터베이스 활용하기 (여러 데이터베이스 기능 비교) 관리자 2021.07.13 1205
25 인터베이스, 비주얼 스튜디오 지원 확장 관리자 2021.05.10 517
24 인터베이스와 FireDac에서 배열필드 사용하기 file 김원경 2020.04.16 406
23 인터베이스, FireDAC 및 TEMSDataSetResource를 사용하여 RAD 서버에서 자동 증가 필드를 생성하는 방법 file 김원경 2020.04.16 409
22 인터베이스(InterBase) 2020 버전을 사용해야 하는 5 가지 이유 file 김원경 2020.04.09 6012
21 IBLite 라이브러리 및 라이선스 배포하기 관리자 2020.04.08 306
20 인터베이스(InterBase)와 다른 데이터베이스들의 기능 비교 file 김원경 2020.02.27 578
19 InterBase ToGo 모바일용 라이선스 배포하기 file 데브기어 2019.10.30 479
18 IBLite 라이브러리 및 라이선스 배포하기 file 험프리 2017.03.24 738
17 [고객 사례- 의료, 델파이+임베디드DB] Management Plus – 안과 EHR 솔루션  file 관리자 2016.11.03 882
16 [고객 사례- 의료, 임베디드DB] PAR Springer-Miller Systems – SpaSoft  관리자 2016.11.03 435
15 [고객 사례- 서비스(회계, 재정, 세무), 임베디드DB] Bonev Soft Audting 의 AJUR (회계, 재정, 세무 솔루션) file 관리자 2016.11.03 699
14 [고객 사례- 의료, 델파이+임베디드DB] Siemens Healthcare 의 체외진단기기 (IVD, In Vitro Diagnostics) file 관리자 2016.11.03 669
13 [고객 사례- 건설, 임베디드DB] GivenHansco 의 콘크리트 건설 사업 솔루션 (Keystone) file 관리자 2016.11.03 517
12 [고객 사례- 제조, 임베디드DB] Electrolux 의 세탁정보관리시스템 (CMIS) file 관리자 2016.11.02 787
11 [고객 사례- 패션, 의료, 사물인터넷] Spinali Design의 Connected Bikini 관리자 2016.11.02 784
10 인터베이스(Interbase) 에디션 안내 file 험프리 2016.08.25 1368
9 인터베이스 데이터베이스와 테이블 생성하기 [3] file 험프리 2016.01.07 2479
8 인터베이스 서버에 접속 시 "unavailable database" 오규가 발생하는 경우 대처방법 [1] file 험프리 2014.07.10 4509
7 InterBase XE3 운영자 가이드 file 문효섭 2014.03.26 3607