Подумайте о рефакторинге вашего кода!
Чтобы ответить на ваш вопрос, вы можете передать строку из main.py
в gen_json.main('...')
и далее в gen_json.get_config('...')
. Argparse оценит эту строку, которую нужно разбить на список.
Вы по-прежнему можете вызывать generate.py с параметрами командной строки.
Обратите внимание, что я удалил ненужный / неправильный код / идентификацию , чтобы показать, как это может работать в принципе.
generate.py:
import argparse
import sys
def main(cliParams=None):
cfg, data, date = get_config(cliParams)
print (cfg, data, date)
#json_location = cfg
#json_database = data["config"]["database"]
#json_collection = data["config"]["collection"]
#json_path = "{0}/{1}{2}/{3}/{3}.json".format(json_location, date, json_database, json_collection)
#print json_path
def get_config(cliParams=None):
parser = argparse.ArgumentParser()
parser.add_argument("-p", "--parameter-file", action="store", required=True)
parser.add_argument("-e", "--export-data-file", action="store", required=True)
parser.add_argument("-d", "--export-date", action="store", required=True)
if not cliParams:
args = parser.parse_args()
else:
args = parser.parse_args(cliParams.split())
#return [args.parameter_file, funcs.read_config(args.export_data_file), args.export_date]
return [args.parameter_file, args.export_data_file, args.export_date]
if __name__ == "__main__":
logging.getLogger().setLevel(logging.INFO)
main()
main.py:
import os
import generate as gen_json
def generate_json():
path = '/tmp/foo.yml'
data = 'export_agent_core_agent.yaml'
date = '2019-01-15'
argParseString = '-p %s -e %s -d %s' % (path, data, date)
gen_json.main(argParseString)
if __name__ == '__main__':
generate_json()
Печать на стандартный вывод:
>>> /tmp/foo.yml export_agent_core_agent.yaml 2019-01-15
Симметричные алгоритмы ограничены, в том любом взломщике новичка с дизассемблером может найти Ваш ключ (или алгоритм используемый для генерации одного) и сделать "keygen".
поэтому асимметричная криптология является способом пойти. Основная предпосылка - что-то вроде этого:
Это - просто основная идея, конечно. Для получения дополнительной информации и исходный код, см. Ключи продуктов На основе Шифрования в эллиптических кривых .
Жизнь более проста при простой покупке решения.
http://www.kagi.com/kagisolutions/index.php
Kagi позволяет Вам взимать плату, и они помогают Вам управлять ключами.
Парень вел блог о том, как он обработал вопрос регистрационных номеров. Одна из его записей в блоге Генерирующие Уникальные Регистрационные номера .
Да, RSA и AES являются двумя совсем другими вещами:
, Так как Ваше приложение не связывается по каналам общего доступа, и использование криптографии ограничено активацией продукта / регистрация, Вы захотите пойти с симметричным шифром. Преимущества шифров с открытым ключом находятся в управлении ключами, которое Вы будете обрабатывать на своем веб-сайте или по электронной почте.
Примечание, что Вы не должны распределять тот же ключ для каждого клиента. Вы могли генерировать хеш части информации о регистрации и XOR это с чем-то еще (фиксированный сеансовый ключ, возможно). Отправьте это клиенту, и программа могла генерировать тот же хеш, и XOR будет ключ, который Вы отправили для создания исходного фиксированного ключа.
Контакт с криптографией не что-то, чтобы быть сделанным слегка. Как Вы упоминаете, Вы ожидаете, что это будет взломано. При выполнении собственного, это почти наверняка произойдет. Можно все еще использовать собственную реализацию, чтобы "сохранить честных людей честными", но понять, что это - насколько Вы доберетесь. При необходимости в чем-то более сильном тогда, необходимо купить решение после проведения полного исследования на решениях.
Можно проверить этот статья Code Project . Это описывает реализацию программный ключ на основе MAC-адреса машины, где программное обеспечение выполняется. Метод не идеален, поскольку сам автор признает, и это немного отличается от того, что Вы ищете, но возможно это может помочь Вам.