2013-05-11 2 views
0

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

  • они могут быть проверены на матч
  • его невозможно получить один токен от другого

PS: Я понимаю, что an RSA public key can be derived by the holder of the private key, так что это нам не поможет.

+0

Нет, вы не можете сделать один ключ от другого. Общие и закрытые ключи RSA - это одно и то же, имя просто указывает, какой из них вы сохраняете. В связанном вами вопросе говорится о файле .pem, который может содержать оба ключа. –

+0

Возможно, я не понимаю вопрос, но ищу хэш-функции? token1 = случайная строка, token2 = md5 (токен + соль) соответствует вашим спецификациям. – georg

+0

@ thg435 это довольно близко, но я бы сказал, что token2 - это пара хэшей и соли *, иначе владелец token1 мог догадаться об этом. Теперь, если для вашей идеи был более высокий уровень обертки, это было бы то, что я хотел. Я напишу его, если он не существует. –

ответ

1

Вы ищете функцию подписи, которая использует случайную часть. Это, например, возможно подписать что-то с помощью RSA-PSS и частного ключа. Тогда токен будет комбинацией открытого ключа и подписи. RSA-PSS отличается от стандартных подписей PKCS # 1 v1.5 тем, что они содержат эту случайную составляющую; PKCS # 1 v1.5 предоставляет ту же подпись для идентичного ввода.

Обратите внимание, что для RSA требуются относительно большие ключи и подписи (минимум 2048 бит является минимальным). Если вам нужен меньший токен, вы можете взглянуть на эллиптические кривые, но это намного сложнее понять и реализовать. Если вы пойдете так, вы можете использовать кривую NIST, такую ​​как P-256. Это сделало бы минимальный размер сигнатуры примерно в 3 - 4 раза размером ключа EC (до 128 байт) вместо 512 байтов для RSA.

Кажется, подписи PSS поддерживаются M2Crypto, но поскольку я не программирую Python, вам придется задать другой вопрос, если вы застряли.

Смежные вопросы