2015-11-29 4 views
1

В python я пытаюсь ослепить и размять сообщение. Когда я отключу сообщение, я не получаю оригинальное сообщение. Кто-нибудь знает, что я могу делать неправильно. Ниже приведен мой код:Использование коэффициента блокировки для RSA в pycrypto

s = 'Hello' 
loadedPublic = get_publickey() 
loadedPrivate = get_privatekey() 

pub = loadedPublic.blind(s,23L) 
pub2 = loadedPublic.unblind(pub,23L) 
return HttpResponse(pub2) 

ответ

3

Ослепление - это своего рода шифрование со случайным элементом. Она обычно используется для Blind Signatures, который будет выглядеть следующим образом:

from Crypto.PublicKey import RSA 
from Crypto.Hash import SHA256 
from random import SystemRandom 

# Signing authority (SA) key 
priv = RSA.generate(3072) 
pub = priv.publickey() 

## Protocol: Blind signature ## 

# must be guaranteed to be chosen uniformly at random 
r = SystemRandom().randrange(pub.n >> 10, pub.n) 
msg = "my message" * 50 # large message (larger than the modulus) 

# hash message so that messages of arbitrary length can be signed 
hash = SHA256.new() 
hash.update(msg) 
msgDigest = hash.digest() 

# user computes 
msg_blinded = pub.blind(msgDigest, r) 

# SA computes 
msg_blinded_signature = priv.sign(msg_blinded, 0) 

# user computes 
msg_signature = pub.unblind(msg_blinded_signature[0], r) 

# Someone verifies 
hash = SHA256.new() 
hash.update(msg) 
msgDigest = hash.digest() 
print("Message is authentic: " + str(pub.verify(msgDigest, (msg_signature,)))) 

This как это реализовано, так что вы не можете непосредственно unblind сообщения, потому что у вас нет d, поэтому ослеплен элемент должен быть подписан первым , Для того, чтобы слепая подпись была безопасной, вам необходимо случайным образом сформировать коэффициент ослепления r в диапазоне модуля подкрепления.

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

  • Нет связанных вопросов^_^