2014-09-12 6 views
2

Centos 컴퓨터에서 ssh-keygen을 사용하여 공개 키와 개인 키 쌍을 생성했습니다. C#의 Windows 응용 프로그램에서 메시지를 암호화하고 CentOS 응용 프로그램 (python/shell)이 해당 개인 키를 사용하여 메시지를 해독 할 수 있도록 공개 키를 C#이 이해할 수있는 형식 (XML?)으로 변환해야합니다. 이 전환은 어떻게 할 수 있습니까?ssh-keys를 C# 형식으로 변환하여 Windows (C#)에서 암호화하고 Linux (python/shell)에서 암호 해독

샘플 키 I는 한 :

공개 키 :

SSH-RSA AAAAB3NzaC1yc2EAAAABIwAAAQEAnq2b0d3fbUMTN85q0xhHH2grdwwmg/8 + 1Efu2rKLAN1RiqHnov9wgRpL + l0cK5xpS7Z03 + Up81HTJWxfH39WW18K + u3I6gyMBcrLaCdB/mWdJ1ayo0gdUiSz7TNDC1AR1S0BORET0oawF0BrhcYabzegQ1cpiQ4dfiQT9s3fupvQF/ZM5fSLFMK3w8wHxvtZoGGJR3K6aawIdWvz/kP0Tz9XXzr3WSrj6OApiACB/X2AvO0bIXvbVrIOsE74kseVBx2jsdVQeJuwN9EPbj4B6EyPaCNeok3Ua/vBNnxGFYIgS4QXPLXh8TXOKu + GI9QQ5Fl2lHRWh82rjMCsv88Wcw == test @ local

개인 키 :

-----BEGIN PRIVATE KEY----- 
MIIEugIBADANBgkqhkiG9w0BAQEFAASCBKQwggSgAgEAAoIBAQCerZvR3d9tQxM3 
zmrTGEcfaCt3DCaD/z7UR+7asosA3VGKoeei/3CBGkv6XRwrnGlLtnTf5SnzUdMl 
bF8ff1ZbXwr67cjqDIwFystoJ0H+ZZ0nVrKjSB1SJLPtM0MLUBHVLQE5ERPShrAX 
QGuFxhpvN6BDVymJDh1+JBP2zd+6m9AX9kzl9IsUwrfDzAfG+1mgYYlHcrpprAh1 
a/P+Q/RPP1dfOvdZKuPo4CmIAIH9fYC87Rshe9tWsg6wTviSx5UHHaOx1VB4m7A3 
0Q9uPgHoTI9oI16iTdRr+8E2fEYVgiBLhBc8teHxNc4q74Yj1BDkWXaUdFaHzauM 
wKy/zxZzAgEjAoIBAFYjuvzmKNTp5dx3Xo/Z+rlHLYnExHOKj9JS72DHUsX0fLj4 
zjPpwLsc52qnkvMaZQvYE498Zzrx56aZ6n7QGO/F4WOlp5T/fzZYJUcrQRUSlyP7 
3VFTCJpOcE2Q20CnzyqUxiZLGWOoM7TZ0/gptpQlguK6Sb9uEAKl3vOxlrXBcZHp 
LQ+CUdixgtq9m5Fmq1rcZtX53m7bp/5DH7P5uTuNan37Um0zqZJjgQM91wwKXK63 
Cv/DErTSWdGeSMSdDkzal8/MzD1NkUf153E7RVMKkrHELH+vo+b+06cGzA4lrYQq 
MfCFaiW6y2NKlFmfBGopyh+T6HAhOdF7cbgChSMCgYEAycRoCg9X5WZEzBAWXr5X 
69BDHPua5EFbi4PyWks0oIlGDCNTH2LMdokx/RRv3nfc/j6RKoJ1LzmfOJoG/+Iw 
AH9QyeSQ6881wTlGBlRxweZ/GcrglQMrwDQHjVMoO6jmC5umfaFre8rBN5EJhFEF 
TKsIxU4LZoqJTyp5n1cq3WUCgYEAyVQ/CseEKdvzjt1l202i7sptePeSSeLWzjgL 
bMXXhUrMXqStF7PxyTcR0wHN4XzrvNC56dVb9XGqS5QkZSt2REsRwiYOgKRC1eXG 
DerlzcclxbQcyH4G88RUrgB9ahynhDWq0dLAbLiISFxBrS23UE1UjcjfNlciGkwt 
wqni8vcCgYBK8S31G6RN5CguiaHorRlXln9T6Gy7Ljfx/c8LmEa/SO4hw/pNfHfU 
QZY5bf2qZwjwuCdKTbZ/QUnEkPtJGX+LJ/lvj2kHIRP3T8mNUpCnGxlEGCeHzfpO 
tD1Rv80deT+Ap4b7dnhhLg1AhlP98jUrGvShDlwBg+nbk28Aq1kQZwKBgEUG8QsC 
k7aUjgUYtTU/MIxiqTDJ6QNjt1ylgEKM+W+HXAMxJWc2YYbRDWzqrPzaX3PvyraS 
S2oYV6TiVZ8HlkNM8CVO4Gaet9ROx4++QClLl+wDPRGKS4bG+HYsDb37Mh6zUIJ0 
JLePubJoxg99Y2v9QY+ylaw7IaKdxoviebJjAoGAZNYtOpG3b9IIIGRvEyfC2m5b 
v1+6QggQ/1AThLdSpBaR/mU+rQ120aUcNc60aLILmoub+DjRwoDHuO9Qnu4krwJI 
WOV9mrBEJfcuNT+dDDJ2MGFqBSwitH2CenTWvbyCMfXOB7Bn8PqMlW5M/6AVv/Nf 
lytOwERMgIc67pKkC+c= 
-----END PRIVATE KEY----- 

내가 사용하는 개인 키에서 PEM 형식의 공개 키를 추출 할 수 있었다 :

openssl rsa -in myPrivateKey -pubout > PublicKey.x509 


-----BEGIN PUBLIC KEY----- 
MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEAnq2b0d3fbUMTN85q0xhH 
H2grdwwmg/8+1Efu2rKLAN1RiqHnov9wgRpL+l0cK5xpS7Z03+Up81HTJWxfH39W 
W18K+u3I6gyMBcrLaCdB/mWdJ1ayo0gdUiSz7TNDC1AR1S0BORET0oawF0BrhcYa 
bzegQ1cpiQ4dfiQT9s3fupvQF/ZM5fSLFMK3w8wHxvtZoGGJR3K6aawIdWvz/kP0 
Tz9XXzr3WSrj6OApiACB/X2AvO0bIXvbVrIOsE74kseVBx2jsdVQeJuwN9EPbj4B 
6EyPaCNeok3Ua/vBNnxGFYIgS4QXPLXh8TXOKu+GI9QQ5Fl2lHRWh82rjMCsv88W 
cwIBIw== 
-----END PUBLIC KEY----- 

나는 윈도우 머신에서 할 수 있습니다 내 모든 공개 키이고 그래서 암호화하는 C#에서 메시지를 RSACryptoServiceProvider 클래스를 사용하여 XML 형식으로로드해야합니다. X509Certificate2와 같은 다른 방법을 사용하려면 공개 키와 개인 키가 모두 인증서 형태로 필요합니다. 내가 ssh 형식의 공개 키만 가지고 있다고 가정하면 C#으로 암호화를 어떻게 진행합니까? 해당 문자열은 해당 개인 키를 사용하여 Linux 측에서 해독해야합니다.

감사합니다.

+0

다음은 [1) 형식] (http://stackoverflow.com/questions/24876762/read-keypairs-publickey-in-rsa-openssh-format/24877697#24877697) 및 [ 2) 일부 C# 코드] (http://stackoverflow.com/questions/3405016/reading-rsa-private-key-in-pem-format-and-reading-public-key-from-certificate/3410469#3410469) that that 이 조각을 처리하는 데 도움을 줄 수 있습니다. –

답변

-1

PEM 공개 키 (즉, BEGIN PUBLIC KEY)를 읽고 RSACryptoServiceProvider를 (DecodeX509PublicKey 메소드를 찾으십시오) 빌드하는 방법을 보여주는 this C# source이 있습니다. 나는이 코드를 직접 해본 적이 없지만 시작하는 곳이다.

+0

링크가 사라질 수 있으므로 어딘가에서 링크하는 대신 예제를 제공하십시오. –