<div dir="ltr">I'm not the king of crypto, but if I recall correctly, some signature standards (and I think PKCS1 is one of them) include a random salt in the signature. This happens automatically, behind the scenes, on your behalf. So two signatures can be of the same content, with the same key, and not be equal - in fact, it's dramatically more likely than not! So you can't rely on bit-for-bit equality of signatures.<br>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Mar 11, 2014 at 8:22 PM, wanggang <span dir="ltr"><<a href="mailto:wanggang@goldenapptechnology.com" target="_blank">wanggang@goldenapptechnology.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi pycrypto,<br>
<br>
This may be a simple problem since I am a newbiee to crypto.<br>
I am not sure why I got different result from PKCS1_v1_5.new(RSA.construct(lst)).sign(SHA.new(a2b(m))) ,<br>
I have mentioned the 'stateful' comment in API doc, but still can't fix the code below.<br>
besides I have used DES for a lot, & never got stuck in such situation.<br>
<br>
if __name__ == "__main__":<br>
    t = (modulus, publicExponent, privateExponent, prime1, prime2, coefficient)<br>
    lst = [long(x,16) for x in t]<br>
<br>
    k = '1234'<br>
    e1 = RSA.construct(lst).encrypt(m, k)<br>
    e2 = RSA.construct(lst).encrypt(m, k)<br>
    assert e1 == e2 # passed<br>
<br>
    signature1 = PKCS1_v1_5.new(RSA.construct(lst)).sign(SHA.new(a2b(m)))<br>
    print binascii.b2a_hex(signature1)<br>
    signature2 = PKCS1_v1_5.new(RSA.construct(lst)).sign(SHA.new(a2b(m)))<br>
    print binascii.b2a_hex(signature2)<br>
    assert signature1==signature2 # why this assertion failed ?<br>
<br>
Thank you in advance!<br>
--------------<br>
 Wang Gang<br>
_______________________________________________<br>
pycrypto mailing list<br>
<a href="mailto:pycrypto@lists.dlitz.net">pycrypto@lists.dlitz.net</a><br>
<a href="http://lists.dlitz.net/cgi-bin/mailman/listinfo/pycrypto" target="_blank">http://lists.dlitz.net/cgi-bin/mailman/listinfo/pycrypto</a><br>
</blockquote></div><br></div>