Witam. Piszę pracę inż o PKI, pokazuję jak działa wykorzystując darmowe rozwiązania. Oczywiście używam Openssl'a aby generować certyfikaty x509v3, oraz jednego z programów szyfrujących napisanych w C#. Problem w tym, że program ten obsługuje klucze w formatach XML, a nie rozpoznaje pemów, keyów itp. To nie problem, bo Openssl też generuje XML ale w innej strukturze, której program nie rozpoznaje.
Jest sposób/komenda, po której Openssl wygeneruje klucz z tymi parametrami P, Q , DP itp.
Przykładowy klucz od openssla:
Kod:
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIoofxKXc2k/oCAggA
MBQGCCqGSIb3DQMHBAiW5pX0kKrW4QSCBMjbS9f3LHU4mFaEs3aiR/0vaDD6YWB5
/tuUStmb2AU1MvF+6diSRn9BMbprYuLPKzRRh2V6eWCIG7XRSisnOV82crPwFA/a
kLEGi4uV+1ursVAcgUdXfmxkfjOWqxIShiulPMKrZf0buA4Zhbb0SCflE2yrJR2n
xKxBqcym4caF/2oRe7mhDcgdmwzBMfPUztZiMWZVGtjv01rmEgzoMTaadL7cYCzk
4XVX3Jq8xtCNoCY79PindET557FI733zhWpVtjgxM6CIcMJNf8tjuliG7VKHcFzN
xNYfKFgvjg60AttUaJl3w+2gYkud+zDkoJ4KzYOlLop04g+UJBUJAd1WWRx2pD/j
CJl63wkDSGTYt6gFt2tMPEEgoL3rMKlRV7/iNIBCve4EPYHmkf4BfhVPN3HfHkX9
QsxO354yu/OsyLcDjW3ZrTaUBfXZ4FUDcJaeuQ+QAIpx1Gig74KZJrdDD8sYusVq
OahEwl/SbTRU53wF81tIWk/GLwFzslv4ygO4+hVMz8qSp5XJacqdt0ktjFdRNE6V
ecwAito/En+bsQNK3JTqdfuaU6Ka5JcdoTKjXcFFJGNLiBB4wpgB9kVGzfU4tChi
Kslal4TpRs/+IAiBh5U9jpDI8huxWlD5exyLqGyCwta/6cczKu3px8PVn6ikq1oy
uGFSHn2utuou+a+LcZb10D6zc0XBfHxaxw+AoxN16AynKG5t+/ZiFQmrN4e3wBX+
HqfL+VMOlbbq7R0kiBrjlh0DnjaIRoUPF02iUMFAbSMg5a3/2MM7Uhzs5AD3Bu30
SoV8GrIRYWHVFVX9Lne5LMBKkVV6FtPS0NsNtflZRxEjpSzPjyIS0sJNx1Mj9k2j
m+IaP0MqAWCQfNWEfHr8XhHldV9c9jZvm3O9dWaZOF+NbFZAoXVZ8tWxBazVDt4N
saul11ZoCPwT1FiZITPpktt/KBvxhO6OL8nKS0PhF2uRed6CaS0CV7Sb5b3vXixx
dS/EORtKWB7zISg6YNyCuaEyo/GxsacBXmExCE1Nhv5wJI3D5DxvWWCshCsG/j2Q
gec1/77saUYb+WZY2bEhRyFdj7m0GxPRyQki/g9/w1RQQIWGrWN+yHL640eYEqMF
Biqa6uGjibJlIsGoDqSqulo42XfjcwN6sRNuDrNrPFpIdpWk/TDADHg6Nzg3RnOo
8O5+SLfN6+aLgomkawyz5Wwd9Nytxt7XpUj9t31oHLE1+NCelmLirnQ/OTFhTkVZ
UEPuuHNHb9p9+W2aLnoU3vlqcKK9kHBoHJqDKx/7bkbachRDI4fVyCqHH3LJ8HHT
HrK53wkdmUDTk0ztOCXLfyn+l1XOd39dytX91z5wbBVixcSs3Zuw4o4iEoqHH0t8
O53NQpu2HbPZ1xdYLGwjGQt0H575FPf2F1zkNbmwP7B1PQKwy9QZZ2fbT4CTExWx
Poybh7nW7u//HJATqEjj99qe+WbUm48ZOp2tqjx8niQ5Tt3Cc85zGzvb9diO3m48
fzGsSLz0W1ixCzkC3+XvkNQ56DOb8uEUkSMOqAxdhaf/nE8jiQ2oNeptb/wDIc8O
TZwl0QjGlmnAWXKYy3NtIUCGDJH7aAba1ildSHya9AZCCL2Etzzt+uXDlAl6IcSP
8bQ=
-----END ENCRYPTED PRIVATE KEY-----
Przykładowy klucz programu:
Kod:
<RSAKeyValue><Modulus>xB6TMcqskEDGD6Gv411/HYToxOnHokMdKjQravwF6GmdUAcqqe30QVF87PCLxt+VAqgewG4pIii76L5NRABT3bv3xocFlRT3ZVqbSAYUyMtz8xjYipPcYB2uabM9/VJX+lKr+Wpw0+I4CRVfzVhZY/pj13fBVMYaKF8N/SOKIn0=</Modulus><Exponent>AQAB</Exponent><P>8kpIHCleIEtHQJmeKNEln3ouuzE/U8yTgXRUufAzSrzejmxnWwFNlc90WtYIOmz886Ag2FqBCENJgO5IMGeP+Q==</P><Q>zzd7i0xHquTZJRBAHY85L8MzfJPPYD8X4hUIjIzBJTxvKaFkCgnM29vnpDpQol2Mg+6vzDu1ONd833bXZmDPpQ==</Q><DP>pOABhBBuegFgAkjHBLWWKZjmdgHEO00qT1yPT1xyOvidZkPEbXxMhJaAclPVk5SY6VxdHX0w8yN+wFrmCvJeWQ==</DP><DQ>TutSojrrEKsYCIWn5ZomrYoqkce5s25UKkbYeq8g4I2jyLcu4qPY4eNe1a1gCHaYjabaTW5wFrX7WSBp6RP2AQ==</DQ><InverseQ>zftwwM+8+oeG7ywTEXBIC+Bev2DnjJ+RAPkg75UXg2DSMZ45CfzDG+9iidpUZsWErGql/TTbiw5h4oV712EdeA==</InverseQ><D>DnBV0++g/snWCyaTRYEHr8uuO3keuoKIbigDHlBJuw+zhkXQzUv4lKqEMQmQsOabGOP5x58UpjArjXodRClmAycQcyu0dCCRbDFAaNG1Xaw09Dut7IvQ2M1vlteW6qmH4NtNVAQPtjRkFwYyeVfzb4D8YBFB9nBCQRu3oQAQ7+E=</D></RSAKeyValue>
Część kodu programu odpowiadająca za zapis struktury pliku:
Kod:
AsymmetricAlgorithm asymm = new RSACryptoServiceProvider(1024);
string publicKey = asymm.ToXmlString(false); //zapis struktury klucza publicznego
string privateKey = asymm.ToXmlString(true); //...i prywatnego
Jednak Visual Studio nie podpowiada mi innych opcji zapisania struktury.