summaryrefslogtreecommitdiff
path: root/pipermail/pycrypto/attachments/20090824/e0fe2c33/attachment.html
blob: 67cabc64b2cb6bf1ded19856180ef8d32c220f42 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<tt>
Hi:&lt;br&gt;&lt;br&gt;I&nbsp;can&amp;#39;t&nbsp;find&nbsp;any&nbsp;example&nbsp;for&nbsp;DSA&nbsp;or&nbsp;ELGAMAL(with&nbsp;google).&lt;br&gt;so&nbsp;i&nbsp;wrote&nbsp;a&nbsp;simple&nbsp;example.&lt;br&gt;&lt;br&gt;&lt;a&nbsp;href=&quot;http://www.jabbertor.de/wp-content/uploads/2009/08/pycryptotest.txt&quot;&gt;http://www.jabbertor.de/wp-content/uploads/2009/08/pycryptotest.txt&lt;/a&gt;&lt;br&gt;<br>
&lt;br&gt;Could&nbsp;someone&nbsp;help&nbsp;to&nbsp;check&nbsp;this?&lt;br&gt;maybe&nbsp;some&nbsp;Hint&nbsp;about&nbsp;security&nbsp;or&nbsp;perfoumance?&lt;br&gt;The&nbsp;script&nbsp;is&nbsp;not&nbsp;commented,&nbsp;sry&nbsp;for&nbsp;that&lt;br&gt;&lt;br&gt;&lt;pre&gt;#!/usr/bin/env&nbsp;python&lt;br&gt;from&nbsp;Crypto.Cipher&nbsp;import&nbsp;AES&lt;br&gt;import&nbsp;os,sys,random&lt;br&gt;<br>
#####################AES&lt;br&gt;print&nbsp;&amp;quot;=====AES&nbsp;256&nbsp;Demo=====&amp;quot;&lt;br&gt;PWD=&amp;quot;&amp;quot;&lt;br&gt;Initial16bytes=&amp;#39;0123456789ABCDEF&amp;#39;&lt;br&gt;&lt;br&gt;a=0&lt;br&gt;for&nbsp;a&nbsp;in&nbsp;xrange(0,32):&lt;br&gt;&nbsp;&nbsp;&nbsp;&nbsp;b=hex(random.randint(1,16)-1)&lt;br&gt;&nbsp;&nbsp;&nbsp;&nbsp;PWD+=b.replace(&amp;quot;0x&amp;quot;,&amp;quot;&amp;quot;)&lt;br&gt;<br>
print&nbsp;&amp;quot;AES-key&amp;quot;,PWD&lt;br&gt;crypt&nbsp;=&nbsp;AES.new(PWD,AES.MODE_CBC,Initial16bytes)&lt;br&gt;&lt;br&gt;plain=&amp;quot;blabla&nbsp;what&nbsp;the&nbsp;hack&nbsp;blabla.&amp;quot;&lt;br&gt;restbyte&nbsp;=&nbsp;32-len(plain)%32&lt;br&gt;temp=&amp;quot;&amp;quot;&lt;br&gt;a=0&lt;br&gt;for&nbsp;a&nbsp;in&nbsp;xrange(restbyte):&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;temp+=&amp;quot;&nbsp;&amp;quot;&lt;br&gt;&lt;br&gt;plain+=temp&lt;br&gt;print&nbsp;&amp;quot;text:&nbsp;\n&amp;quot;,plain&lt;br&gt;c=&nbsp;crypt.encrypt(plain)&lt;br&gt;print&nbsp;&amp;quot;encrypted&nbsp;text:&nbsp;&amp;quot;&lt;br&gt;print&nbsp;c.encode(&amp;quot;hex&amp;quot;)&lt;br&gt;crypt&nbsp;=&nbsp;AES.new(PWD,AES.MODE_CBC,Initial16bytes)&lt;br&gt;<br>
print&nbsp;&amp;quot;decrypted&nbsp;text:&nbsp;\n&amp;quot;,&nbsp;crypt.decrypt(c)&lt;br&gt;####################&nbsp;RSA&lt;br&gt;print&nbsp;&amp;quot;\n=====RSA&nbsp;368&nbsp;Demo=====&amp;quot;&lt;br&gt;from&nbsp;Crypto.PublicKey&nbsp;import&nbsp;RSA&lt;br&gt;from&nbsp;Crypto.Util.randpool&nbsp;import&nbsp;RandomPool&lt;br&gt;rpool&nbsp;=&nbsp;RandomPool()&lt;br&gt;<br>
&lt;br&gt;privatekeyCMS&nbsp;=&nbsp;RSA.generate(368,&nbsp;rpool.get_bytes)&lt;br&gt;privatekeyClient&nbsp;=&nbsp;RSA.generate(368,&nbsp;rpool.get_bytes)&lt;br&gt;publickeyCMS&nbsp;=&nbsp;privatekeyCMS.publickey()&lt;br&gt;publickeyClient&nbsp;=&nbsp;privatekeyClient.publickey()&lt;br&gt;&lt;br&gt;signed_PWD&nbsp;=&nbsp;privatekeyCMS.sign(PWD,&amp;quot;&amp;quot;)&lt;br&gt;<br>
enc_PWD&nbsp;=&nbsp;publickeyClient.encrypt(PWD,&nbsp;&amp;quot;&amp;quot;)&lt;br&gt;print&nbsp;&amp;quot;with&nbsp;publickeyClient&nbsp;encrypted&nbsp;AES-PWD:&amp;quot;&lt;br&gt;print&nbsp;enc_PWD&lt;br&gt;print&nbsp;&amp;quot;with&nbsp;privatekeyCMS&nbsp;signed&nbsp;AES-PWD:&amp;quot;&lt;br&gt;print&nbsp;signed_PWD&lt;br&gt;&lt;br&gt;&lt;br&gt;dec_PWD=&nbsp;privatekeyClient.decrypt(enc_PWD[0])&lt;br&gt;<br>
print&nbsp;&amp;quot;identity&nbsp;check:\n&amp;quot;,publickeyCMS.verify(dec_PWD,signed_PWD)&lt;br&gt;print&nbsp;&amp;quot;decrypted&nbsp;PWD:\n&amp;quot;,dec_PWD&lt;br&gt;&lt;br&gt;&lt;br&gt;####################&nbsp;ELGAMAL&lt;br&gt;K=&amp;quot;&amp;quot;&lt;br&gt;a=0&lt;br&gt;for&nbsp;a&nbsp;in&nbsp;xrange(0,16):&lt;br&gt;&nbsp;&nbsp;&nbsp;&nbsp;b=hex(random.randint(1,16)-1)&lt;br&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;K+=b.replace(&amp;quot;0x&amp;quot;,&amp;quot;&amp;quot;)&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;print&nbsp;&amp;quot;\n=====ELGamal&nbsp;368&nbsp;Demo=====&amp;quot;&lt;br&gt;from&nbsp;Crypto.PublicKey&nbsp;import&nbsp;ElGamal&lt;br&gt;from&nbsp;Crypto.Util.randpool&nbsp;import&nbsp;RandomPool&lt;br&gt;rpool&nbsp;=&nbsp;RandomPool()&lt;br&gt;<br>
&lt;br&gt;privatekeyCMS&nbsp;=&nbsp;ElGamal.generate(368,&nbsp;rpool.get_bytes)&lt;br&gt;privatekeyClient&nbsp;=&nbsp;ElGamal.generate(368,&nbsp;rpool.get_bytes)&lt;br&gt;publickeyCMS&nbsp;=&nbsp;privatekeyCMS.publickey()&lt;br&gt;publickeyClient&nbsp;=&nbsp;privatekeyClient.publickey()&lt;br&gt;&lt;br&gt;<br>
&lt;br&gt;enc_PWD&nbsp;=&nbsp;publickeyClient.encrypt(PWD,&nbsp;K)&lt;br&gt;print&nbsp;privatekeyCMS.can_sign()&lt;br&gt;signed_PWD&nbsp;=&nbsp;privatekeyCMS.sign(PWD,97)&lt;br&gt;print&nbsp;&amp;quot;with&nbsp;publickeyClient&nbsp;encrypted&nbsp;AES-PWD:&amp;quot;&lt;br&gt;print&nbsp;enc_PWD&lt;br&gt;print&nbsp;&amp;quot;with&nbsp;privatekeyCMS&nbsp;signed&nbsp;AES-PWD:&amp;quot;&lt;br&gt;<br>
print&nbsp;signed_PWD&lt;br&gt;&lt;br&gt;&lt;br&gt;dec_PWD=&nbsp;privatekeyClient.decrypt(enc_PWD)&lt;br&gt;print&nbsp;&amp;quot;identity&nbsp;check:\n&amp;quot;,publickeyCMS.verify(dec_PWD,signed_PWD)&lt;br&gt;print&nbsp;&amp;quot;decrypted&nbsp;PWD:\n&amp;quot;,dec_PWD&lt;br&gt;&lt;br&gt;####################&nbsp;DSA&nbsp;only&nbsp;sign&lt;br&gt;<br>
K=&amp;quot;&amp;quot;&lt;br&gt;a=0&lt;br&gt;for&nbsp;a&nbsp;in&nbsp;xrange(0,16):&lt;br&gt;&nbsp;&nbsp;&nbsp;&nbsp;b=hex(random.randint(1,16)-1)&lt;br&gt;&nbsp;&nbsp;&nbsp;&nbsp;K+=b.replace(&amp;quot;0x&amp;quot;,&amp;quot;&amp;quot;)&lt;br&gt;&lt;br&gt;print&nbsp;&amp;quot;\n=====DSA&nbsp;368&nbsp;Demo=====&amp;quot;&lt;br&gt;from&nbsp;Crypto.PublicKey&nbsp;import&nbsp;DSA&lt;br&gt;<br>
rpool&nbsp;=&nbsp;RandomPool()&lt;br&gt;&lt;br&gt;privatekeyCMS&nbsp;=&nbsp;DSA.generate(368,&nbsp;rpool.get_bytes)&lt;br&gt;publickeyCMS&nbsp;=&nbsp;privatekeyCMS.publickey()&lt;br&gt;signed_PWD&nbsp;=&nbsp;privatekeyCMS.sign(PWD,K)&lt;br&gt;print&nbsp;&amp;quot;identity&nbsp;check:\n&amp;quot;,publickeyCMS.verify(dec_PWD,signed_PWD)&lt;br&gt;<br>
print&nbsp;&amp;quot;decrypted&nbsp;PWD&nbsp;from&nbsp;ELGAMAL:\n&amp;quot;,dec_PWD&lt;br&gt;&lt;/pre&gt;&lt;br&gt;<br>

</tt>