Чтобы прояснить ситуацию и разобраться в деталях, я работаю над 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?