Асимметричное шифрование (например, с помощью RSA) полезно только для коротких сообщений. При использовании 1024-битного ключа RSA (типичный размер) максимальный размер входного сообщения составляет 117 байт.
«Обычная» настройка заключается в выборе случайного секретного ключа (то есть пучка случайных бит) шифровать этот ключ с помощью RSA и шифровать остальную часть сообщения симметрично (т.е. с помощью симметричного шифра, такого как AES), используя этот ключ. Симметричные шифры не имеют таких ограничений размера и намного быстрее, чем асимметричное шифрование.
Теперь так получилось, что даже если теория может выглядеть просто, есть очень много деталей, которые могут сделать реализацию во многих случаях, в том числе, чтобы код отображался для правильной работы, будучи открытым для атак (а точка криптографии - противостоять атакам). Таким образом, правильный способ - использовать существующий протокол, который уже охватывает эти детали, а также реализацию, которая была разработана и настроена для этого. Наиболее распространенным протоколом для этого является TLS (также известный как SSL). C # /. NET, похоже, имеет класс System.Net.Security.SslStream
, который, вероятно, вы хотите.
inspect.getframeinfo и другие связанные функции в inspect
могут помочь:
>>> import inspect
>>> def f1(): f2()
...
>>> def f2():
... curframe = inspect.currentframe()
... calframe = inspect.getouterframes(curframe, 2)
... print('caller name:', calframe[1][3])
...
>>> f1()
caller name: f1
этот самоанализ предназначен для помощи при отладке и разработке; не рекомендуется полагаться на него для производственной функциональности.