Что я должен использовать для шифрования в Python и расшифровки в проекте C# .net?
Я новичок в шифровании и видел много разных библиотек, однако многие из них были созданы много лет назад, мне просто интересно, что люди используют сегодня для шифрования в python и что-то, что будет работать с ним для расшифровки в C# .net
Я посмотрел Pycrypto, но из всех прочитанных мной сообщений, кажется, что он не обновлялся некоторое время (хотя это кажется очень популярным), и люди испытывали настоящую борьбу за то, чтобы заставить его работать с.net,
Есть хорошие предложения? Я не думаю, что для этого существует библиотека, которая имеет версию.net & python? Это действительно должно быть надежное шифрование, такое как AES.
2 ответа
Для любого в будущем я провел несколько тестов и обнаружил, что это отлично работает для моих целей, пример silverlight может быть в значительной степени перенесен на C#.
Использует pycrypto & System.Security.Cryptography
http://japrogbits.blogspot.co.nz/2011/02/using-encrypted-data-between-python-and.html
Мы не знаем, как данные перемещаются, поэтому вот несколько советов:
Если клиент и сервер обмениваются данными по двустороннему каналу, используйте SSL. Python имеет хорошую встроенную поддержку SSL, я уверен, что C# также имеет хорошую поддержку. Это легко настроить, вы даже можете использовать stunnel, чтобы ваш код на Python и C# не касался криптографии.
Если клиент и сервер взаимодействуют асинхронно (например, электронная почта, пакетные задания и т. Д.), Используйте PGP / GPG. Шифрование и дешифрование могут быть выгружены во внешний процесс, такой как GPG, поэтому стоимость внедрения (независимо от языка) будет относительно минимальной, и ваш код на Python и C# не должен касаться криптографии.
Ни один из них не требует использования библиотеки.
В обоих случаях вам нужно будет создать пару открытый / закрытый ключ. Обычная процедура - установить эту пару ключей на сервер и связать открытый ключ с клиентом. Если ваше приложение не имеет простого разделения между "клиентом" и "сервером", вам нужно будет что-то придумать, но вам следует СПРОСИТЬ ПЕРВЫЙ, потому что криптографию легко ошибиться. Страшно легко.
НЕ ИСПОЛЬЗУЙТЕ "AES".
Если вы вводите "AES" в ваш исходный код где-то, вы делаете это неправильно.
Кроме того, не используйте AES.
AES - это шифр, который является одним из строительных блоков криптографической системы. Вам не нужен строительный блок, вам нужна полная система. SSL и PGP / GPG являются законченными системами. Если вы попытаетесь изобрести свою собственную систему с помощью AES, вы, вероятно, где-то совершите простую ошибку, и это очень плохо.
Создать жизнеспособную систему криптографии сложно. Подобно операции на головном мозге, есть много людей, которые могут подобрать нож, но лишь немногие знают, где резать.
Я упоминал, что вы не должны использовать AES?
Хорошо, не используйте AES.
Не забывайте избегать AES.