Spolupráce OpenSSL a RSACryptoServiceProvider
Pokud bychom chtěli šifrovat RSA mezi OpenSSL (např. v PHP) a .NETovou platformou pomocí třídy RSACryptoServiceProvider-u narazíme na jeden velký problém. OpenSSL a RSACryptoServiceProvider používají jiné formáty klíčů.
Naštěstí existuje řešení:
- Stáhnout OpenSSL - http://www.openssl.org/
- Vygenerovat soukromí klíč (pro demostraci s výchozími parametry):
openssl genrsa -out private.pem - Vygenerovat veřejný klíč:
openssl rsa -pubout -in private.pem -out public.pem - Stáhnout utilitu OpenSSLKey - http://www.jensign.com/opensslkey/, která dokáže převést klíč z formátu generovaného OpenSSL do .NETového.
Bohužel se mi touto utilitou podařilo převést pouze soukromý klíč. Konverze veřejného klíče způsobila chybu v programu. Naštěstí to ale u veřejného klíče nevadí.
- Převedený formát klíče se lze načíst metodou FromXmlString, kterou má RSACryptoServiceProvider
- Pro získání veřejného klíče v XML formátu je nutné zavolat metodu ToXmlString(false)
Tímto postupem jsme získali soukromý a veřejný klíč pro OpenSSL, tak i pro RSACryptoServiceProvider.
Detaily popisuje článek na http://www.jensign.com/opensslkey/, ve kterém lze stáhnout utilitu OpenSSLKey včetně zdrojového kódu v C#.
Upozornění na nové komentáře
Pokud chčeš dostávat upozornění emailem na změny u toho příspěvku,tak se zaregistruj zde.zde
Odebírat komentáře k tomuto příspěvku pomocí