Przynajmniej w typowym algorytmie szyfrowania klucza publicznego (np. RSA) nie ma istotnej różnicy między kluczem publicznym a kluczem prywatnym. Podczas generowania kluczy otrzymujesz dwa klucze.Zachowujesz jedno prywatne i publikujesz drugie - ale nie ma znaczenia, który z nich publikujesz i który zachowujesz jako prywatny.
Wszystko, co zaszyfrujesz jednym kluczem, można odszyfrować innym kluczem. W normalnych celach publikujesz jeden klucz, który pozwala każdemu zaszyfrować coś, co tylko ty możesz odszyfrować. Z technicznego punktu widzenia odwrotne działanie działa dobrze: jeśli zaszyfrujesz coś swoim kluczem prywatnym, każdy z kluczem publicznym może go odszyfrować. Zazwyczaj jest to używane do weryfikacji podpisu (tzn. Każdy, kto ma klucz publiczny, może sprawdzić, czy podpis musiał zostać utworzony za pomocą klucza prywatnego). Zwykle chcesz używać oddzielnych par kluczy do szyfrowania i podpisywania.
Dla twojej sprawy, jest otwarte na pewne pytanie, co naprawdę zamierzasz osiągnąć. Z pewnością można zaszyfrować niektóre dane niezbędne do korzystania z programu, więc użytkownik potrzebuje klucza do odszyfrowania go i korzystania z programu - ale jeśli użytkownik chce przekazać kopię kodu nieautoryzowanej osobie, prawdopodobnie wygrał nie wahaj się też przekazać im kopię klucza. W związku z tym, mimo że szyfrowanie/odszyfrowywanie spełni swoje zadanie, jest mało prawdopodobne, aby zapewniło prawdziwą ochronę.
Bardziej typowy schemat licencjonowania jest powiązany z czymś w rodzaju określonego adresu IP, więc można zrobić coś w rodzaju zaszyfrowania adresu IP, a następnie użyć wyniku jako klucza do odszyfrowania danych potrzebnych do korzystania z programu. Jeśli adres IP jest nieprawidłowy, dane nie zostaną poprawnie odszyfrowane, a program nie działa. Dopóki użytkownik ma statyczny adres IP, może to działać dobrze, ale spowoduje problemy w połączeniu z DHCP.
Moja natychmiastowa porada po prostu tego nie zrobiłaby. Jeśli mimo to nalegasz na zrobienie tego, nie rób tego sam - uzyskaj coś w rodzaju FlexNet, aby sobie z tym poradzić. Bez tego lepiej się czuć, ale przynajmniej w ten sposób uzyskasz coś, co działa pod rodzajami, a Ty nie będziesz tracić czasu ani wysiłku na to, co można by lepiej wykorzystać do ulepszenia twojego oprogramowania.
To jest złe. W przypadku szyfrowania asymetrycznego szyfrujesz za pomocą klucza publicznego odbiorcy. –
@Matthew Nie powiedziałem inaczej. Powiedziałem, że nie powinien * nie * rozpowszechniać swojego prywatnego klucza. – Kevin
, więc w moim przypadku, co powinienem robić? Zakładając, że będę używał tego samego klucza publicznego i prywatnego dla wszystkich klientów. – jax