Как я могу отфильтровать JSON вывод в зависимости от входного значения? python - PullRequest
0 голосов
/ 08 апреля 2020

Чтобы прояснить ситуацию и разобраться в деталях, я работаю над API Python / Flask, который декодирует заданный закрытый ключ, используя модуль под названием «Криптография», для извлечения всех его доступных данных.

Таким образом, каждый алгоритм ключа получил свои собственные данные, которые мы можем вернуть

Пример:

  • ключи RSA: размер ключа, publi c показатель степени, publi c Модуль, частный показатель степени, коэффициент, простое число, простое число

  • Ключи DSA: ключ размер, личное значение, Publi c модуль, порядок подгруппы, генератор

  • E C ключи: размер ключа, эллипти c кривая, аффинный X, аффинный Y, точечный код, частный показатель

Я могу использовать несколько JSON выходов для каждого ключевого алгоритма, но в моем случае я хочу один JSON общий вывод который берет все извлеченные данные для всех алгоритмов ключей и возвращает только нужные данные, зависит от алгоритма ключей

        data = {
            "keySize": private_key.key_size,

            # RSA Data
            "publicExponent": str(private_key.private_numbers().public_numbers.e),
            "publicModulus": str(private_key.private_numbers().public_numbers.n),
            "privateExponent": str(private_key.private_numbers().d),
            "coefficient": str(private_key.private_numbers().dmp1),
            "primeOne": str(private_key.private_numbers().p),
            "primeTwo": str(private_key.private_numbers().q),

            # DSA data
            "privateValue": str(private_key.private_numbers().x),
            "publicModulus": str(private_key.parameters().parameter_numbers().p),
            "subgroupOrder": str(private_key.parameters().parameter_numbers().q),
            "generator": str(private_key.parameters().parameter_numbers().g),

            # EC data
            "ellipticCurve": str(private_key.private_numbers().public_numbers.curve  ),
            "affineX": str(private_key.private_numbers().public_numbers.x),
            "affineY": str(private_key.private_numbers().public_numbers.y),
            "pointEncode": str(private_key.private_numbers().public_numbers.encode_point()),
            "privateExponent": str(private_key.private_numbers().private_value),

            }

Пример для RSA: он должен возвращать

        data = {
            "keySize": "1024",
            "publicExponent": "65537",
            "publicModulus": "144046960826964522090107907122296583786149342220977844235259487179490538388636744741132056951598656271943017200143480876750557098807513470995220190730548451503199948234080074082933335008697253694839789660879251368813432571433414137018411945552424426316297093350480850708331638040277395071175258290880967979561",
            "privateExponent": "108514922913591794255317110678470247922638802123867390142041841120872596713083978891533496860664620882892086946126368225064494171616426561736195065940734339594791686342548872794925188417840147926177197907394090762601382906059538238695506424424088104187529589934256016343642873782733736651552155915599187629165",
            "coefficient": 10965134936029308897628586123549366739067561227181515110183686050492885567277465241903908967804242404874556358839882263087620402288772301302504991344796083,
            "primeOne": "12105146943528220621980706624762989100956300179327801832327267458791413146174736621892638457390493295515266572716067781958618349276497436376017343851830219",
            "primeTwo": "11899645786949856424487614649049054453712028601456269444191763574567640045614154601935649146349911472001297508496328315310681189205063119821646030605046619",
            }

Я попробовал метод, который игнорировать и исключать значения Null JSON

 {
     "dict1" : {
     "key1" : "value1",
     "key2" : None
     }
 }
{
     "dict1" : {
     "key1" : "value1"
     }
 }

Но проблема здесь в следующем: данные, которые не соответствуют алгоритму ключа, возвращают TypeErreur no t Null

есть ли способ превратить поля TypeErreur в значения Null?

Или, может быть, другой метод / решение для фильтрации моего JSON?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...