{"id":1047,"date":"2013-06-28T13:50:46","date_gmt":"2013-06-28T12:50:46","guid":{"rendered":"http:\/\/www.phillips321.co.uk\/?p=1047"},"modified":"2013-06-28T13:50:46","modified_gmt":"2013-06-28T12:50:46","slug":"installing-pycrypto-in-windows-and-aes-demo","status":"publish","type":"post","link":"https:\/\/www.phillips321.co.uk\/2013\/06\/28\/installing-pycrypto-in-windows-and-aes-demo\/","title":{"rendered":"Installing PyCrypto in windows and AES demo"},"content":{"rendered":"<p>So I needed pycrypto for some AES bits I was doing.<\/p>\n<p>Unfortunately I was playing in windows so it wasn&#8217;t as easy as apt-get install.<\/p>\n<p>Download <a href=\"https:\/\/www.dlitz.net\/software\/pycrypto\/\" target=\"_blank\">pycrypto from here<\/a>. Once downloaded extract it and then you&#8217;ll need to run &#8216;python setup.py build&#8217;. Unfortunately python 2.7.5 looks for visual studio 2007 so you need to trick it into using the version of visual studio you having installed, in my case it&#8217;s VS2010.<\/p>\n<div class=\"codecolorer-container text vibrant\" style=\"overflow:auto;white-space:nowrap;width:100%;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/><\/div><\/td><td><div class=\"text codecolorer\">SET VS90COMNTOOLS=%VS100COMNTOOLS%<br \/>\npython setup.py build<br \/>\npython setup.py install<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Simple when you know how&#8230;.<\/p>\n<p>Example of AES encode and decode (note this isn&#8217;t that secure as we&#8217;re not using a IV anywhere, it&#8217;s just a dmeo)<\/p>\n<div class=\"codecolorer-container python vibrant\" style=\"overflow:auto;white-space:nowrap;width:100%;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/><\/div><\/td><td><div class=\"python codecolorer\"><span class=\"kw1\">from<\/span> Crypto.<span class=\"me1\">Cipher<\/span> <span class=\"kw1\">import<\/span> AES<br \/>\nkey<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;YELLOW SUBMARINE&quot;<\/span> <span class=\"co1\">#needs to be 16bytes<\/span><br \/>\nplaintext<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;Goodness great balls of fire!&quot;<\/span><br \/>\n<br \/>\n<span class=\"co1\">#Encode (string and key needs to be multiple of 16bytes)<\/span><br \/>\npadding <span class=\"sy0\">=<\/span> <span class=\"nu0\">16<\/span> - <span class=\"br0\">&#40;<\/span><span class=\"kw2\">len<\/span><span class=\"br0\">&#40;<\/span>plaintext<span class=\"br0\">&#41;<\/span> % <span class=\"nu0\">16<\/span><span class=\"br0\">&#41;<\/span><br \/>\nplaintext +<span class=\"sy0\">=<\/span> <span class=\"kw2\">chr<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">3<\/span><span class=\"br0\">&#41;<\/span>*padding <span class=\"co1\"># add 'End of Text' padding to plaintext<\/span><br \/>\n<br \/>\nencryptor <span class=\"sy0\">=<\/span> AES.<span class=\"kw3\">new<\/span><span class=\"br0\">&#40;<\/span>key<span class=\"sy0\">,<\/span> AES.<span class=\"me1\">MODE_ECB<\/span><span class=\"br0\">&#41;<\/span><br \/>\nciphertext <span class=\"sy0\">=<\/span> encryptor.<span class=\"me1\">encrypt<\/span><span class=\"br0\">&#40;<\/span>plaintext<span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"kw1\">print<\/span> ciphertext<br \/>\n<br \/>\n<span class=\"co1\">#Decode<\/span><br \/>\ndecryptor <span class=\"sy0\">=<\/span> AES.<span class=\"kw3\">new<\/span><span class=\"br0\">&#40;<\/span>key<span class=\"sy0\">,<\/span> AES.<span class=\"me1\">MODE_ECB<\/span><span class=\"br0\">&#41;<\/span><br \/>\nplaintext <span class=\"sy0\">=<\/span> decryptor.<span class=\"me1\">decrypt<\/span><span class=\"br0\">&#40;<\/span>ciphertext<span class=\"br0\">&#41;<\/span><br \/>\nplaintext <span class=\"sy0\">=<\/span> plaintext.<span class=\"me1\">strip<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">chr<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">3<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"co1\"># remove 'End of Text' padding<\/span><br \/>\n<span class=\"kw1\">print<\/span> plaintext<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n","protected":false},"excerpt":{"rendered":"<p>So I needed pycrypto for some AES bits I was doing. Unfortunately I was playing in windows so it wasn&#8217;t as easy as apt-get install. Download pycrypto from here. Once downloaded extract it and then you&#8217;ll need to run &#8216;python setup.py build&#8217;. Unfortunately python 2.7.5 looks for visual studio 2007 so you need to trick [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[374,378,377,137,380,379,373,111,376,375],"_links":{"self":[{"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/posts\/1047"}],"collection":[{"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/comments?post=1047"}],"version-history":[{"count":4,"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/posts\/1047\/revisions"}],"predecessor-version":[{"id":1051,"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/posts\/1047\/revisions\/1051"}],"wp:attachment":[{"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/media?parent=1047"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/categories?post=1047"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/tags?post=1047"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}