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

1  2  3  4  [5]  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5828김재영2/19/20233085장기적으로는 this 구문을 안쓰는게 맞을까요? [2]
5827lee2/18/20233005파이썬 설치 오류 질문입니다 [1]
5826Syong2/14/20233596Socket 관련 Leak (OverlappedAsyncResult, OverlappedData) 관련 문의 [7]파일 다운로드1
5825박성원2/14/20233160Listview 컨트롤의 화면 전환 시 갱신 속도 [1]
5823검은콩2/13/20233759catch(Exception ex)의 line번호를 쉽게 알 수 없는지요? [7]
5822김지우2/11/20233029책을 보면서 sync, async 이해가 되지 않는 부분이 있습니다. [5]파일 다운로드2
5821검은콩2/9/20233049Async 신뢰성과 소켓데이터 [4]
5820차가워2/8/20233115다른 프로세스 실행 후 포커스 가져오기 [3]
5819취준생2/7/20233274WPF 관련 실무가 궁금합니다. [3]
5818윤길2/7/20232722ObservableCollection 에서 INotifyPropertyChanged 구현해야하나요? [2]
5817흰털너부리2/7/20232858배포 시 winform 실행 콘솔로그 보는 방법 [1]
5816흰털너부리2/6/20232672.net core json array validation 질문 드립니다. [1]
5815김재영2/6/20232799종단간 암호화에 대해 시나리오인데 타당한 시나리오일까요? [2]
5814한예지 donator2/6/20233116decompile? [9]
5813김재영2/5/20233054openssl genrsa 2048시 키 생성이 다르게 됩니다. - 파일첨부 [4]파일 다운로드1
5812김재영2/5/20233328openssl genrsa 2048시 키 생성이 다르게 됩니다. [2]
5811치르바2/3/20233162MiniDumpWriteDump API로 덤프수집을 했는데요.. [3]
5810이건우1/31/20233255윈도우서비스를 통한 웹통신관련 질문입니다 [3]
5809이상훈1/31/20233697다채널 영상 디스플레이어 개발 관련 질문입니다. [3]
5808근우1/30/20233379WPF 에서 UserControl 과 ControlTemplate 의 차이점은 무엇인가요? [6]
5807궁금맨1/28/20234537C# 10 책에 나온 예제의 결과가 제 컴에서는 좀 달라서요. 이유가 궁금합니다. [1]
5806스레드1/25/20233051총정리 - 다양한 스레드들 [초안] [1]파일 다운로드1
5805어웨이트1/25/20232875Taskcontinuewith vs Async/Await [2]파일 다운로드1
5804나이많은...1/25/20232732MS의 Dependency Injection(DI)에 AddSingleton으로 등록된 객체의 Event 등록후 사용시 앱 종료시 별도로 Event를 해지해야 하나요? [2]
5803dssc...1/24/20233001드라이브 문자를 통해서 물리 디스크 명칭을 알아내고 싶습니다. [1]
5802모바일앱1/22/20232857XAMARINE vs Android Studio [7]
1  2  3  4  [5]  6  7  8  9  10  11  12  13  14  15  ...