Используйте форматирование строки
head = csv.reader(open('{}.csv'.format(sys.argv[1])))
или Python 3.6 или более поздней версии
head = csv.reader(open(f'{sys.argv[1]}.csv'))
+1 к ответу Mehrdad. Продолжение криптографии собственной разработки опасно.
Разговор на основе опыта здесь, видя уязвимости в клиентских решениях для шифрования собственной разработки. Большинство уязвимостей происходит из-за той же причины - передача данных была защищена шифрованием с секретным ключом, но самим ключом обменялись небезопасным способом.
TLS/SSL решает проблему не только безопасный ключевой обмен, но также и безопасной передачи данных.
TLS/SSL защищает Вашу уязвимую информацию при помощи асимметричной ключевой криптографии для обмена симметричным ключом, используемым для шифрования информации назад и вперед, после того как сессия TLS/SSL была установлена. Симметричный ключ сгенерирован во времени выполнения и является общим секретом между клиентом и сервером; именно этот ключ используется для шифрования всего другого трафика, после того как сессия готова к передаче данных.
Открытые и закрытые ключи сервера используются только для обмена этим общим секретом. Единственный известный способ поставить под угрозу общий ключ состоит в том, чтобы поставить под угрозу закрытый ключ сервера (так, чтобы секретный ключ мог затем быть дешифрован). В действительности это требует небрежности или преступного намерения со стороны администратора сервера.
Если Вы решение для шифрования самокрутки, необходимо обмениваться симметричным ключом безопасным способом. Самый легкий способ сделать так состоит в том, чтобы использовать TLS/SSL; более твердый путь состоит в том, чтобы реализовать Ваше собственное асимметричное ключевое обменное решение для криптографии.
Я настоятельно рекомендую против движения с Вашим собственным решением (в безопасности чувствительные среды). Пойдите с SSL. Это - доказанная технология, и легко реализовать.
Прокрутка Ваших собственных решений по обеспечению безопасности может быть действительно опасной и даже если она будет реализована правильно (шанс на 0,000001%), то это будет дорого.
Вы проведете больше времени и денег, прокручивающих Ваше собственное решение, и не будете уверены, что это безопасно. Промышленный стандарт, который SSL легок реализовать и намного более безопасный из поля, чем Вы, может позволить себе сделать Ваше собственное решение.
время == деньги
Купите сертификат и проведите свое время, работая над Вашим приложением вместо безопасной формы входа в систему.
Хорошо, вот единственный ответ, в котором Вы нуждаетесь: Ваш БАНК только поддерживает вход в систему/автора через SSL. Если был лучший способ сделать это, они были бы.
HTTP только решения всегда будет восприимчив к атакам "человек посередине".
Править: Сетевая трассировка была бы простым способом доказать, что HTTP не безопасен.
Клиентское шифрование беспомощно против большинства нападений на MITM. Взломщик может просто удалить Ваш сценарий.
Это только защитит от пассивного сниффинга. Если это достаточно хорошо для Вас, можно использовать:
... просто используйте SSL.
Если бы сами данные не слишком уязвимы, но пароли, я предложил бы использовать дайджест-аутентификацию HTTP (который является совершенно другим зверем от Базовой аутентификации HTTP). Это, является довольно безопасным по прямому HTTP и нисколько трудным реализовать на сервере. Ничто не отправляется по проводу, который мог показать, каков пароль, просто информация, которая позволяет клиенту демонстрировать серверу, что у них есть правильный пароль.
Если Вы хотите достойное объяснение того, как реализовать дайджест-аутентификацию HTTP в Вашем приложении, у Paul James есть превосходная статья о нем.
Единственная настоящая проблема с Аутентификацией HTTP находится в самих браузерах: UI ужасен, но это может быть преодолено с некоторым JavaScript.
Можно сохранить пароли надежно путем хранения хеша A1.
ОБНОВЛЕНИЕ: Как упомянуто в других ответах, в то время как сервер может избежать нападений на MITM, не приняв Основного автора, клиент все еще уязвим, потому что он будет.
ОБНОВЛЕНИЕ: Вы не можете защитить данные по POST, если Вы любой не (a) сделайте шифрование в JavaScript на клиенте или, (b) делает все по SSL.
С определенным волшебством, можно использовать автора HTTP с формами. Статью, которую я связал с вышеупомянутым, называют 'Автором HTTP с HTML-формами', в конце концов. Но это не будет сделано по POST.
Если Вам действительно нужен он, действительно используют POST, используют SSL и солят пароли в Вашей базе данных.
Если Вы хотите, избегают CSRF, я рекомендую использовать formkeys, хотя идея идет многими различными именами, я поднял то имя со взламывания Slashcode для моего собственного использования несколько лет назад, который является, где я столкнулся с ним сначала.
Вы упомянули, что делали свое собственное шифрование плюс соль... Я предлагаю использовать javascript md5 (он также используется Yahoo на их не ssl страницы, или таким образом, он требует)...
И Вы двойной хеш пароль..., некоторые могут утверждать, что дважды хеширование его сделало бы его подверженным нападениям коллизии. Я должен был бы не согласиться, потому что люди смогли сделать до настоящего времени md5 коллизии подписи только на файлах, где большой объем данных является md5'ed...
Если бы это - большой корпоративный веб-сайт (и были бы причины ворваться) нет никакого оправдания, не используя SSL.
Ну, существует некоторая внутренняя дискуссия о вместо этого выполнении некоторого roll-our-own клиентского шифрования паролей (пароль + соль, и т.д.).
Первой вещью, к которой мы должны обратиться, являются данные в пути по сравнению с данными в покое. От OP это кажется, что большое беспокойство является именем пользователя/паролем в ясном по Интернету. Так, Вы действительно заботитесь о данных в пути. HTTPS через SSL является испытанным методом выполнения этого (и это - довольно легкая фиксация!). Теперь, если Вы действительно хотите к самокрутке для данных в покое (в дб, на файловом сервере, и т.д.), это - другой зверь, но существующие методы для шифрования данных будут лучше, чем самокрутка.
Доверие стороне клиента для Вашей безопасности плохо. Период. В корпоративной среде, да, можно несколько полагаться на стандартную установку. Но в конечном счете пользователи являются немыми, и можно столкнуться с кем-то запрещающим JavaScript или безотносительно основанного на клиенте решения, которое Вы развертываете, таким образом, они заканчивают тем, что отправили имя пользователя/пароль в простом тексте так или иначе (даже если Ваши серверы' не знают, что сделать с ним, потому что это не находится в ожидаемом формате.
Самокрутка не будет подвергающейся исследованию, которое имеет существующее решение. Вы могли закончить тем, что добавили дополнительные проблемы безопасности в соединение из-за кода.