Które lepiej użyć openssl lub windows capi do problemów z ecnryption, co jest listą pro i con dla obu. i jeśli to możliwe, aby napisać mój program szyfrujący na openssl i odszyfrować go z windows capi bez problemu lub jest jakiś problem z tym.openssl versus windows capi
Odpowiedz
W celach kryptograficznych łatwiej jest najpierw przemyśleć kluczowe zarządzanie. Gdzie klucze są przechowywane, w jaki sposób są tworzone, kto je używa i w jaki sposób są bezpiecznie niszczone. Z mojego doświadczenia wynika, że kluczowe zarządzanie ogranicza strukturę aplikacji.
CryptoAPI oferuje interfejs API do uzyskiwania dostępu do kluczy przechowywanych w dowolnych miejscach za pośrednictwem sterownika ("CSP") zarejestrowanego w systemie operacyjnym. OpenSSL może oferować coś podobnego przy pomocy OpenSC, ale sterownik powinien następnie obsługiwać API PKCS # 11. Tak czy inaczej, sterownik jest jakimś DLL dostarczonym przez każdego, kto zbudował urządzenie pamięci masowej (zakładając, że klucz jest przechowywany i używany w urządzeniu sprzętowym).
Jeśli chcesz mieć możliwość używania kluczy przechowywanych na urządzeniach sprzętowych (gdzie urządzeniem może być karta inteligentna, HSM, ... wszystko, co może zrobić kryptografię, ale odmówi podania klucza), muszą przejść przez CryptoAPI lub PKCS # 11. CryptoAPI jest z natury tylko systemem Windows, więc PKCS # 11 jest sposobem, aby kod mógł zostać uruchomiony na systemach innych niż Windows (MacOS, Linux, Solaris ...). Jeśli wybierzesz metodę PKCS # 11, możesz zamiast tego wypróbować numer NSS zamiast OpenSSL. NSS jest biblioteką używaną w przeglądarce opartej na Netscape (np. Firefox). To jest open-source.
Z drugiej strony, jeśli kierujesz tylko do systemów Windows, CryptoAPI ułatwia dystrybucję, ponieważ już istnieje, nie ma potrzeby dodatkowej biblioteki DLL.
Jeśli jesteś gotów na utratę sprzętu i chcesz użyć kryptografii tylko programowej, z kluczami przechowywanymi w pamięci RAM, prawdopodobnie nie będziesz chciał używać CryptoAPI, który jest dość słabo wykorzystywany w liczbie algorytmów, które implementuje, i warianty, które akceptuje (np. CryptoAPI nalega, aby publiczne wykładniki RSA były mniejsze niż 32 bity - jest to normalne, ale ograniczenie jest nadal arbitralne i potencjalnie uciążliwe). Istnieje wiele bibliotek kryptograficznych; oprócz OpenSSL i NSS, możesz chcieć sprawdzić Crypto++, co jest dość dojrzałe i podobno przyjazne dla C++.
- 1. pymssql versus pyodbc versus adodbapi versus ...
- 2. Integracja OpenSSL i Apple Keychain
- 3. metaphone versus soundex versus NYSIIS
- 4. macrodef versus script versus javascript
- 5. apache_request_headers() versus $ _SERVER
- 6. emacs powershell versus powershell-mode
- 7. ArrayList versus array of objects versus Collection of T
- 8. . versus $ w Haskell
- 9. AbstractFactory Versus Bridge Pattern
- 10. org.codehaus.jackson versus com.fasterxml.jackson.core
- 11. System.Web.Http.Authorize versus System.Web.Mvc.Authorize
- 12. TaskFactory.StartNew versus ThreadPool.QueueUserWorkItem
- 13. itertools.accumulate() versus functools.reduce()
- 14. BOOST_FOREACH versus dla pętli
- 15. MvcBuildViews Versus Razor Generator
- 16. EJS: <% = versus <% -
- 17. Python __str__ versus __unicode__
- 18. boost lambda versus phoenix
- 19. . Net Parse versus Convert
- 20. any_of Versus find_if
- 21. map versus mapM behavior
- 22. dispatch_after versus performSelector afterDelay
- 23. .Net Remoting versus WCF
- 24. Różnica między konwencjami wywoływania interfejsu ccall i capi FFI
- 25. Dlaczego OpenSSL na windows daje błąd, ale nie na CentOS: PKCS12_parse: Mac sprawdzenia awarii (OpenSSL :: pkcs12 :: PKCS12Error)
- 26. Zwiększenie bjam versus GNU make
- 27. callback instalacji tinyMCE versus onAddEditor
- 28. dopasowanie nlme: vcov versus podsumowanie
- 29. FluentAssertions ShouldBeEquivalentTo() versus Should(). BeEquivalentTo()
- 30. @ zsynchronizowany blok versus GCD dispatch_async()
[Byłem zmagający się] (http://stackoverflow.com/q/43802185/267874) aby OpenSSL na Windows działał z HSM już od tygodni i muszę powiedzieć, że twoja prosta odpowiedź wyjaśniła cały obraz dla mnie! Jesteś moim przyjacielem, naprawdę wiesz, jak zapewnić jasne i istotne informacje. Dziękuję Ci! Off Idę teraz, próbując drogi PKCS # 11, być może teraz na różnych platformach! –