@TheDigitalMadness
Программист

Что такое PSS.MAX_LENGTH?

Дам часть кода:
from cryptography.hazmat.primitives.asymmetric import padding

padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH)

что такое padding.PSS.MAX_LENGTH и чему она равна? Желательно объяснить на русском: я впервые вижу библиотеку cryptography.
  • Вопрос задан
  • 81 просмотр
Решения вопроса 2
Zagir-vip
@Zagir-vip
Web dev, Game dev, app dev, Разработчик на Python!
в документации сказано

MAX_LENGTH

Pass this attribute to salt_length to get the maximum salt length available.

В переводе:

Передайте этот атрибут в salt_length, чтобы получить максимальную доступную длину соли.
Ответ написан
Комментировать
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Очевидно это длина соли и по умолчанию она уже максимальна, но можно солить и не максимальной по длине солью. Я присоединяюсь к вопросу. что вас не устроило в документации?
Этот параметр задан в библиотеке у функции по умолчанию. Если вы не знаете что там прописать - не трогайте.
Чему равно максимальное значение вы можете увидеть прыгнув на реализацию этой константы, ну или просто напечатав это значение в консоль.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@foogaz
Максимальное значение вычисляется функцией calculate_max_pss_salt_length:
cryptography/hazmat/primitives/asymmetric/padding....:
def calculate_max_pss_salt_length(
    key: rsa.RSAPrivateKey | rsa.RSAPublicKey,
    hash_algorithm: hashes.HashAlgorithm,
) -> int:
    if not isinstance(key, (rsa.RSAPrivateKey, rsa.RSAPublicKey)):
        raise TypeError("key must be an RSA public or private key")
    # bit length - 1 per RFC 3447
    emlen = (key.key_size + 6) // 8
    salt_length = emlen - hash_algorithm.digest_size - 2
    assert salt_length >= 0
    return salt_length

Например, для Verification это значение рассчитывается из public_key:
public_key = private_key.public_key()
public_key.verify(
    signature,
    message,
    padding.PSS(
        mgf=padding.MGF1(hashes.SHA256()),
        salt_length=padding.PSS.MAX_LENGTH
    ),
    hashes.SHA256()
)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы