Dev/Encryption

SHA1 해쉬함수, boost 라이브러리로 구현

# SHA1 해쉬 함수의 경우 crypto++ 라이브러리로 사용 가능 하지만, 간단히(?) boost 라이브러리도 가능. http://www.cryptopp.com/ 실행 : http://coliru.stacked-crooked.com/a/4d6de3acd08dee1c#include #include using namespace std; #include #include string ToSHA1(const string s) { boost::uuids::detail::sha1 sh; sh.process_bytes(s.c_str(), s.length()); unsigned int digest[5]; sh.get_digest(digest); string r; for(int i = 0; i < 5; ++i) { r..

2014.10.22 게시됨

Dev/Encryption

디피-헬만 키 교환, C++ 예제

# 큰수를 나타내기 위해 boost::multiprecision 의 cpp_int 클래스 이용 http://www.boost.org/doc/libs/1_56_0/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/cpp_int.html # 큰수를 나타내는 boost 지원 3개의 클래스 비교 http://www.boost.org/doc/libs/1_56_0/libs/multiprecision/doc/html/boost_multiprecision/tut/ints.html # 소수 판별을 위한 boost::multiprecision 의 miller_rabin_test 함수 사용 # 밀러 라빈 소수 판별법 http://ko.wikipedia.org/wiki/..

2014.10.17 게시됨

Dev/Encryption

디피-헬만 키 교환

출처 : 위키백과 http://ko.wikipedia.org/wiki/%EB%94%94%ED%94%BC-%ED%97%AC%EB%A7%8C_%ED%82%A4_%EA%B5%90%ED%99%98 디피-헬만 키 교환위키백과, 우리 모두의 백과사전.디피-헬만 키 교환(Diffie–Hellman key exchange)은 암호 키를 교환하는 하나의 방법으로, 두 사람이 암호화되지 않은 통신망을 통해 공통의 비밀 키를 공유할 수 있도록 한다. 휫필드 디피와 마틴 헬만이 1976년에 발표하였다.디피-헬만 키 교환은 기초적인 암호학적 통신 방법을 수립하였으며, 이후 1977년 공개 키 암호 방식인 RSA 암호가 제안되었다.방식[편집]앨리스와 밥이 공개된 통신망에서 디피-헬만 키 교환을 하기 위해서는 다음과 같은 절차를 ..

2014.10.16 게시됨

Dev/Encryption

SSL 키 교환 방식

출처 : http://eastdg.wordpress.com/2014/04/09/ssltls-%EA%B8%B0%EB%B3%B8/ Key Exchange (키 교환)SSL/TLS이 사용할 수 있는 몇몇 키 알고리즘들이 있는데, 대부분의 키 알고리즘들은 서버의 공개키를 이용하여 동작한다. 다음은 많이 쓰이는 키 알고리즘 들이다.RSA: 서버의 키…….유형이 RSA 형식인 경우 사용가능하다. 클라이언트는 46바이트의 랜덤 값과 2바이트 버전을 포함한 총 48바이트의 “pre-master secret” 값을 만들어 서버의 공개키로 암호화 하여 전송한다. 이러한 경우 ServerKeyExchange 과정은 없다.DHE_RSA: 서버의 키 유형이 RSA 형식인 경우지만, 해당 키는 서명을 하는 경우에만 사용된다. 실..

2014.10.15 게시됨

Dev/Encryption

해쉬 함수 SHA1CryptoServiceProvider, SHA1Managed 차이

SHA1CryptoServiceProvider는 윈도우의 CryptoAPI(CAPI)를 래핑한 unmanaged 구현체 이고, SHA1Managed는 .NET으로 구현한 Managed 코드 SHA1Managed가 상대적으로 느리다고 하는데, 그 차이는 ms 단위의 속도를 중요시 하지 않는 업무라면 문제 없을 듯 하고, 자체 구현이라 이식성도 좋아 보임 물론 사용 가능 하다면 SHA1CryptoServiceProvider 쓰는것이 최선.. http://codeissue.com/issues/i34dda6deaad90a/difference-between-sha1-sha1cryptoserviceprovider-sha1managed-and-sha1cng SHA1CryptoServiceProvider: this i..

2014.09.26 게시됨

Dev/Encryption

Crypto++ 사용하기, 예제

Crypto++ (http://www.cryptopp.com) C++ 용 암호화 라이브러리 Crypto++ 컴파일 우선 해당 사이트에서 라이브러리를 다운 받은 후 원하는 컴파일러로 컴파일을 하여 dll 이나 lib 파일을 생성한다. VC++ 2008 버전의 경우 프로젝트 파일이 따로 있지는 않고 VC++2005 버전을 업그레이드 후 컴파일 하면 됨 컴파일을 하면 cryptopp560\Win32 디렉토리에 각각 파일이 생성되고, dll 의 경우는 cryptopp560\Win32\DLL_Output 폴더에, static library 의 경우는 cryptopp560\Win32\Output 폴더에 각각의 모듈이 생성 된다. 내가 테스트 할때는 dll 의 버전의 경우 이상하게 링크에러가 발생을 하여, stati..

2009.10.14 게시됨