Microsoft MVP성태의 닷넷 이야기
openssl genrsa 2048시 키 생성이 다르게 됩니다. - 파일첨부 [링크 복사], [링크+제목 복사],
조회: 10289
글쓴 사람
김재영 (kjyoffice at gmail.com)
홈페이지
첨부 파일

안녕하세요
이전 질문에 대해 코멘트를 보고 샘플코드에 적용해봤습니다.

성태님의 의견처럼 아래의 코드로 수정해서 암호화는 되는걸 확인했지만 복호화는 실패하고 있습니다.

var ackp = (pr.ReadObject() as Org.BouncyCastle.Crypto.Parameters.RsaPrivateCrtKeyParameters);

뭔가 일반적으로는(?) 암호화 할때 썼던거 고대로 써서 복호화 해야하는거 같은데
다르게 오류가 뜨니 응?????? 거리고 있습니다.

- ConsoleApp1 : 성태님 코드 셋 + pem은 온라인 사이트에서 복사해옴 - 암호화/복호화 동작
- ConsoleApp2 : 성태님 코드 셋 + 수정부분 반영 + pem은 Hyper-V Ubuntu openssl에서 생성 - 암호화 동작 / 복호화 실패


어드바이스가 있다면 어드바이스 부탁드리겠습니다.
감사합니다.








[최초 등록일: ]
[최종 수정일: 2/5/2023]


비밀번호

댓글 작성자
 



2023-02-05 10시29분
[김재영] 쓰고보니 뭔가 이런거 같은데 틀릴지도 모르지만 일단 써봅니다.

성태님의 샘플코드에서 만들어진 키 PKCS#1 포맷에서는 PRIVATE 키 하나로 비밀키 공개키가 한꺼번에 나왔는데 (AsymmetricCipherKeyPair)

PKCS#8 포맷에서는 각각 키를 만들어야 한다

암호화 때는 openssl genrsa 2048로 만들어진 키 하나로만 되는게 아니라
이 키를 가지고 또 다른 명령어를 날려 공개키를 만들어서
암호화/복호화에 써야한다

맞는지는 잘 모르지만 써봅니다.

감사합니다.
[guest]
2023-02-06 09시59분
말씀하신 것이 맞습니다. 개인키로 암호화한 데이터를 복호화한다면 명시적으로 공개키로 읽혀야만 하도록 바뀐 것 같습니다. 그래서 첨부한 파일의 key.pem에서 공개키만 추출한 후,

openssl rsa -pubout -in key.pem -out pub_key.pem

"pub_key.pem" 파일을 대상으로 PemReader를 이용해 읽어내면,

var ackp = pr.ReadObject() as Org.BouncyCastle.Crypto.Parameters.RsaKeyParameters;

이후, 복호화가 잘 됩니다. 사실, 현실적으로 봤을 때 암호화/복호화를 모두 개인키가 포함된 파일로 하는 경우는 없으므로 딱히 문제될 것은 없지만, 테스트하기가 약간 번거롭게 된 것 뿐입니다.

-------

만약 단순 예제를 위해서 key.pem 하나로 유지하고 싶다면 (또는 어차피 암/복호화라는 목적에 부합하므로) .NET BCL로 변환해 RSACryptoServiceProvider로 진행해도 됩니다.

RSAParameters rsaParameters = DotNetUtilities.ToRSAParameters(ackp); // ackp == RsaPrivateCrtKeyParameters 타입
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(rsaParameters);

string privateKeyText = rsa.ToXmlString(true);
string publicKeyText = rsa.ToXmlString(false);

--------

참고로, 왜 첨부 예제를 개인키로 암호화하고 공개키로 복호화하는 식으로 작성한 것인지 모르겠지만, 그 반대로 하셔야 합니다.

C# - PEM 파일을 이용한 RSA 개인키/공개키 설정 방법
; https://www.sysnet.pe.kr/2/0/13245
정성태
2023-02-06 10시13분
[김재영] 참고로, 왜 첨부 예제를 개인키로 암호화하고 공개키로 복호화하는 식으로 작성한 것인지 모르겠지만, 그 반대로 하셔야 합니다.

-> 암호화/복호화 동시에 안되니 서로 바꿔보고 왔다갔다 실행해보다가 여쭤본거라서 코드가 그랬네요 아하하하하하하
암호화때는 공개키, 복호화때는 비밀키!

다시 해보도록 하겠습니다.
감사합니다.
[guest]
2023-02-06 10시24분
[김재영] 비밀키로 개인키 만들어서 해보니 잘 됩니다.
감사합니다. +_+
[guest]

... 61  62  63  64  65  66  67  68  69  70  71  72  73  74  [75]  ...
NoWriterDateCnt.TitleFile(s)
674황태욱7/5/200716628utf-8 환경에서 파라미터 값에 한글이 있을 경우 깨지는 현상이.. [1]
672땡초7/4/200715838Remoting 객체를 호출하는 순간 Timer 의 Elapsed 이벤트가 멈추는 현상 [2]
670조성택7/3/200715244.Net에서 Timer클래스.. [1]
667홍석헌6/29/200714478[c#] 윈도우 활성화에 관한 질문
669정성태6/30/200714791    답변글 [답변]: [c#] 윈도우 활성화에 관한 질문
666오야6/25/200713523System.Transactions 에서 트랜잭션 실패를 체크하는 방법 [1]
665김성태6/20/200713182안녕하세요^^
668정성태6/30/200714438    답변글 [답변]: 안녕하세요^^
663모름이6/19/200712748Microsoft.Framework 에서 OLE DB 사용하려면.. [1]
664모름이6/20/200713665    답변글 [추가질문]: 다른 OLE DB 를 사용하려면..
662조성택6/13/200714287C#에서 string클래스.. [1]
660신동열6/11/200715502ClickOnce 업데이트시 이전 버젼 제거오류 [1]
659한귀순6/11/200716776윈폼 프로그램 및 디자인. [2]
661한귀순6/12/200714245    답변글 [추가질문]: 윈폼 프로그램 및 디자인. [3]
657정해봉6/8/200725016요청 시간 초과 오류 [2]
655이방은5/28/200715320성태님 UML 도구 뭐 쓰십니까??? [1]
654임정훈5/23/200714180카드스페이스 관련질문
658정성태6/9/200714874    답변글 [답변]: 카드스페이스 관련질문 [1]
653사다수스5/22/200735783아래한글(HwpCtrl) ocx 메모리 릭 문제입니다. [4]파일 다운로드1
645송원석5/15/200717099ASP 의 ByVal 과 ByRef 특성
646정성태5/15/200716809    답변글 [답변]: ASP 의 ByVal 과 ByRef 특성
647송원석5/16/200717190        답변글 [답변]: [답변]: ASP 의 ByVal 과 ByRef 특성 [1]
648정성태5/16/200715937            답변글 [답변]: [답변]: [답변]: ASP의 ByVal과 ByRef 특성 [1]
649장윤태5/16/200715006                답변글 [답변]: [답변]: [답변]: [답변]: ASP 의 ByVal 과 ByRef 특성
650정성태5/16/200713184                    답변글 [답변]: [답변]: [답변]: [답변]: [답변]: ASP의 ByVal과 ByRef 특성 [2]
643해운대끓...5/15/200712562Singleton 패턴 테스트중 하나의 윈폼만 열기 오류파일 다운로드1
... 61  62  63  64  65  66  67  68  69  70  71  72  73  74  [75]  ...