Microsoft MVP성태의 닷넷 이야기
openssl genrsa 2048시 키 생성이 다르게 됩니다. - 파일첨부 [링크 복사], [링크+제목 복사],
조회: 12312
글쓴 사람
김재영 (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]

... 46  47  48  49  50  51  [52]  53  54  55  56  57  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
2563솔솔5/13/201517474custom search!! [1]
2562안녕하세요5/13/201518415안녕하세요.. C# 구조체 관련. [1]
2560솔솔5/6/201518386zip파일생성시. [1]
2561솔솔5/6/201518747    답변글 [답변]: zip파일생성시. [5]파일 다운로드1
2558로손5/4/201521870VB6.0의 ActiveX(OCX) 와 .Net에서 만든 COM DLL의 차이점 ?? [1]
2559로손5/6/201519308    답변글 [답변]: VB6.0의 ActiveX(OCX) 와 .Net에서 만든 COM DLL의 차이점 ??
2557Guest4/24/201517848Serialize , DeSerialize 관련 질문입니다! [3]
1558민식짱4/23/201519633FFmpeg.exe 를 이용한 C# 동영상 인코더 예제를 보고 질문드립니다 [1]파일 다운로드1
1555김응규4/22/201524111WCF net.tcp 관련해서 질문 드립니다. [2]
1556김응규4/22/201522064    답변글 [답변]: WCF net.tcp 관련해서 질문 드립니다. [1]파일 다운로드1
1554(삭제)4/19/201521995안드로이드 에뮬레이터에서 특정 앱 구동불가할때! [2]
1552spow...4/18/201529415마이크로세컨드 단위의 Sleep이 필요한데 찾질 못하겠습니다. [5]
1553spow...4/18/201521519    답변글 [답변]: 마이크로세컨드 단위의 Sleep이 필요한데 찾질 못하겠습니다. [1]
1551인디언기...4/16/201520825iisnode에 대해서 글 올리셨던데 질문이 있습니다 [1]
1549김선아4/15/201520890.net framework 4.5와 c++ dll에 관한 질문입니다 [1]
1550김선아4/15/201519305    답변글 [답변]: .net framework 4.5와 c++ dll에 관한 질문입니다 [2]
1547문명식4/3/201521622IWebBrowser Key Event 관련 [2]
1545나종식3/25/201520546internet explorer dns cache flush [2]
1543이용원3/23/201519459hyper-v 질문드려요! [1]
1544이용원3/24/201519137    답변글 한가지만 더 여쭤볼게요! [1]
1541임기성3/20/201526279Microsoft.Office.Core dll관련 문제 [1]
1539펜플3/17/201519383asp.net 질문입니다. [1]
1540113/17/201519503    답변글 [답변]: asp.net 질문입니다. [1]
1538열공합시닷3/13/201520524중계서버 질문드립니다 [1]
1537김재영3/11/201522608asp.net의 빌드 유휴시간 이후의 리빌드 작업을 컨트롤 할 수 있습니까? [2]
1536솔솔3/9/201519952mac address얻으려고 하는데요.. [1]
... 46  47  48  49  50  51  [52]  53  54  55  56  57  58  59  60  ...