떼 르미 의 『 IT , 그리고 세상 』 : : SEED 활용 - 전자서명 
 당신 은 나 를 오해 할 권리 가 있 고 나 는 해명 할 의무 가 없 다 . 
 SEED 활용 - 전자서명 
 Tech : / . NET · C # 2014 . 03 . 26 10 : 49 
 이번 에 는 앞 SEED 소스 를 이용 해서 실제 공인 인증서 를 읽 는 부분 과 기타 암호 화 / 복호화 에 사용 하 는 방법 을 예제 로 올려본다 . 아래 에 사용 된 기본 코드 는 모노 프로젝트 의 PKCS 12 코드 를 기반 으로 했 지만 모노 에서 사용 하 는 비밀 키 , 초기 화 벡터 생성 방식 이 기존 다른 알고리즘 들 과 는 좀 다른 , 이상 한 부분 이 있 어 SEED 알고리즘 을 기존 코드 내 에 추가 , 확장 하 는 데 는 실패 했 고 , 결국 그냥 따로 만들 었 다 . 
 모노 프로젝트 는 아래 에서 받 을 수 있 다 . 
 >> 참고 : http : / / www . go - mono . com / mono - downloads / download . html 
 아마도 아래 소스 코드 에서 모노 의 PKCS 12 를 확장 하 려고 했 던 , PKCS 12 상속 설정 된 부분 을 제거 해도 동작 하 는 데 는 크 게 상관 없 을 듯 . 물론 관련 의존 코드 들 은 다 삭제 해야 하 겠 지만 . 
 [ nPKCS 12 . cs ] 
 namespace PnPeople . Security 
 public class nPKCS 12 : PKCS 12 
 public nPKCS 12 ( ) 
 / / / SEED / CBC 에서 Password 는 입력 문자열 을 그대로 사용 한다 
 / / Key , IV 를 각각 64 바이트 로 만들 어서 합친다 . ... 이상 한 로직 : 사용 하 면 안 될 듯 
 private SEED GetSymmetricAlgorithm ( string algorithmOid , byte [ ] salt , int iterationCount ) 
 switch ( algorithmOid ) 
 case pbeWithSHAAndSEEDCBC : 	 	 	 / / no unit test available 
 / / IV required only for block ciphers ( not stream ciphers ) 
 if ( ivLength > 0 ) 
 private SEED GetSymmetricAlgorithm ( byte [ ] salt , int iterationCount ) 
 / / Rfc 2898 DeriveBytes 사용 : 에러 남 
 private byte [ ] getKey ( byte [ ] derivedKey ) 
 private byte [ ] getIV ( byte [ ] derivedKey ) 
 public new byte [ ] Decrypt ( string algorithmOid , byte [ ] salt , int iterationCount , byte [ ] encryptedData ) 
 / / Mono DeriveBytes 사용 : 에러 남 
 / / CFB 테스트 
 / / ECB 테스트 
 / / OFB 테스트 
 마지막 으로 앞 의 SEED 코드 와 위 nPKCS 12 코드 를 이용 해서 실제 공인 인증서 를 읽 는 예제 는 아래 와 같 다 . 
 아래 예제 를 정상 실행 하 기 위해서 는 PKCS 8 클래스 가 필요 하 기 때문 에 모노 프로젝트 가 설치 되 어 있 어야 한다 . 
 모노 프로젝트 에 포함 된 소스 파일 들 중 에서 아래 클 래스 들 몇 개 만 따로 복사 해서 사용 해도 되 긴 한다 . 
 ASN 1 . cs 
 ASN 1 Convert . cs 
 BitConverterLE . cs 
 PKCS 12 . cs 
 PKCS 8 . cs 
 X 501 Name . cs 
 X 520 . cs 
 [ CertTest . cs ] 
 / / / test 에 대한 요약 설명 입니다 . 
 class CertTest 
 / / / 공인 인 증서 읽 기 
 / / 인증 기관 인증서 ( 공개 키 ) --> 이 부분 은 그냥 아무 의미 없 는 테스트 . .. 
 / / 자신 의 PC 에 있 는 인증 기관 인증서 파 일 명 을 쓰 면 된다 
 / / 실제 개인 인증서 접근 부분 
 foreach ( DirectoryInfo dir in keyDir . GetDirectories ( ) ) 
 / / 개인 키를 이용한 전자서명 테스트 
 보 다시피 공인 인증서 라 해 봐야 별 건 없 다 . 개인 키 파일 은 개인 키 암호 를 이용 해서 SEED 알고리즘 으로 암호 화 되 어 있 기 때문 에 개인 인증서 ( 개인 키 ) 를 얻 으려면 개인 키 암호 를 이용 해서 복호 화 하 면 된다 . 
 순서 대로 보 자면 , 
 개인 키 파일 을 읽 어서 PKCS 8 클래스 로 읽 으면 암호 화 된 개인 키 정보 를 얻 을 수 있 는데 
 여기 서 암호 화 알고리즘 과 Salt , 반복 횟수 정보 를 바로 읽 을 수 있 고 
 이걸 이용 해서 SEED 알고리즘 의 암호 화 키 와 초기 화 벡터 를 얻 는다 . 
 ( 암호 화 키 와 초기 화 벡터 를 얻 었 으면 끝난 거 지 뭐 . ) 
 개인 키 파일 로부터 개인 인증서 ( 개인 키 ) 를 제대로 얻 었 으면 이걸로 전자 서명 이 든 뭐 든 하 고 싶 은 대로 할 수 있 다 . 
 위 예 제 는 1234567890 이 라는 데이터 에 전자 서명 을 한 번 해 본 것 이 다 . 서명 된 데이터 는 역시 개인 키로 검증 할 수 있 다 . 또 , 실제로 는 위 예제 처럼 바이너리 바이트 배열 로 사용 할 수 도 있 지만 보통 은 XML 디지털 서명 을 할 때 더 많이 쓴다 . 그 예 제 는 시간 나 면 따로 올려 볼 기회 가 있 을라나 . .. 뭐 이미 관련 글 들 은 넘쳐나 니 내 가 또 쓸 이유 가 별로 없 긴 하 다 . 
 구독 하 기 떼 르미 의 『 IT , 그리고 세상 』 
 ' Tech : > . NET · C #' 카테고리 의 다른 글 
 ASP . NET 웹 서비스 와 일반 Javascript Ajax ( 0 ) 
 C # 4 . 5 버전 과 C # 4 . 5 . 1 버전 의 차이 ( 0 ) 
 SEED 활용 - 전자서명 ( 5 ) 
 SEED C # 소스 ( 23 ) 
 AJAX Control Toolkit : NoBot ( 0 ) 
 AjaxFileUpload 한글 파 일 명 관련 버그 ( 2 ) 
 Posted by 🐮 Thermidor ™ 떼 르미 
 TAG Digital Signature , PKCS 12 , SEED , 공인 인증서 , 암호 화 , 암호 화 알고리즘 , 전자서명 
 123456 2017 . 11 . 14 12 : 55 댓글 주소 수정 / 삭제 댓글 쓰 기 
 아직 답변 을 주 실지 는 모르 겠 지만 . . 
 혹시 모노 프로젝트 를 참조 하 는 방법 은 어떻게 하 는 건지 알 수 있 을까요 ? ? 
 참고 : http : / / www . go - mono . com / mono - downloads / download . html 
 위 주소 에서 mono 프로젝트 설치 는 했 는데 설치 후 에 비주얼 스튜디오 에서 적용 하 려면 
 참조 추가 같 은 것 을 해 줘야 하 는 게 아닌지 해서요 . . 
 제 가 초보 라 모르 는 부분 많 습니다 . . 도움 부탁 드려요 
 🐮 Thermidor ™ 떼 르미 2017 . 11 . 14 14 : 12 신고 댓글 주소 수정 / 삭제 
 123456 2017 . 11 . 14 14 : 50 댓글 주소 수정 / 삭제 댓글 쓰 기 
 댓글 감사 합니다 . . 알려 주 신 데 로 프로젝트 에 사용 하 고 있 는 닷넷 프레임워크 버전 폴더 에 들어가 서 
 Mono . Security . dll 을 참조 하 여 컴파일 하 였 더니 아래 와 같 은 오류 메세지 가 나옵니다 . 
 < 오류 내용 > 
 혹시 어떤 문제 인지 알려 주 실 수 있 을까요 ? 
 🐮 Thermidor ™ 떼 르미 2017 . 11 . 16 17 : 42 신고 댓글 주소 수정 / 삭제 
 해당 오류 는 원인 이 천차만별 이 라 딱히 뭐 라 짚 어 내 기 가 어렵 네요 . 대표 적 인 원인 은 보통 target platform 이 다를 경우 ( x 86 , x 64 , 또는 AnyCPU ) 이 고 , 그 다음 으로 는 bindingRedirect 설정 버전 이 잘못 명시 된 경우 정도 가 떠오르 네요 . 
 story 2018 . 11 . 11 17 : 04 댓글 주소 수정 / 삭제 댓글 쓰 기 
 감사 합니다 . 따로 컨 버팅 할 필요 가 없이 시간 이 단축 되 었 네요 . 
 떼 르미 . 🐮 Thermidor ™. 열월 
 by 떼 르미 
 빙 번역기 ( Bing Tra . . 
 광고 게시 를 시작 했 . . 
 독서 일기 에 악 플 을 . . 
 2008 . 06 . 26 ~ 27 에 포 . . 
 낙서 장 ( 148 ) 
 정치 · IT · 이슈 ( 323 ) 
 나 랏 말 싸 미 ( 50 ) 
 독서 일기 ( 309 ) 
 * TH 4 P ( 4 ) 
 Game : O - Game ( 78 ) 
 Game : 영웅 온라인 ( 40 ) 
 Game : 쓰 론 워즈 ( 52 ) 
 Game : 워 앤드 오더 ( 31 ) 
 Tech : ( 470 ) 
 일반 · 기타 ( 165 ) 
 . NET · C # ( 75 ) 
 ASP · VB 6 ( 24 ) 
 C · C ++ ( 9 ) 
 AD · ADAM ( 23 ) 
 HTML · DHTML ( 44 ) 
 Linux · PHP ( 13 ) 
 XML · XSL ( 11 ) 
 VML · SVG ( 23 ) 
 Server · IIS ( 83 ) 
 추천 자료실 ( 25 ) 
 쓰 론 워즈 
 워 앤드 오더 
 TH 4 P 
 영웅 온라인 
 오게임 브라우저 
 OGSkript 
 워 앤드 오더 ( War a . .. ( 3 ) 
 2019 - 08 - 04 : 튜 토리 . .. 
 2019 - 07 - 19 : 스피릿 . .. 
 굿 즈 ( Goods ) 가 뭐 니 ? . 
 2019 - 07 - 07 : 블레 이 . .. 
 닉 넴 은 아니 구요 사 . .. 나름 08 . 21 
 130 서버 에서 만 하 고 . .. 떼 르미 08 . 21 
 혹시 몇 서버 에 계세 . .. 나름 08 . 20 
 그렇 군요 . 그런 거 야 . .. 떼 르미 08 . 06 
 그냥 앱 관리 에서 pa . .. 장지노 08 . 06 
 スノーボードコーナ . .. スノーボードコーナ . . 2014 
 sims freeplay guide . sims freeplay guide 2014 
 シューズ . シューズ 2014 
 ショートスキー . ショートスキー 2014 
 디지털 리스트 hisas . .. 
 떼 르미 ' s Blog is powered by Daum / Designed by Tistory 
 자바 스크립트 를 허용 해 주 세요 !