Black Hat Python — Encrypt and Decrypt with RSA Cryptography

Ismail Akkila
2 min readDec 21, 2017

Its very straighforward to encrypt/ decrypt files using Python. In this post, I will show a few scripts to accomplish this.

Generate a RSA private/ public key pair

We generate the pair using 4096 bits private key length:

Private Key:-----BEGIN RSA PRIVATE KEY-----MIIJKgIBAAKCAgEAqaH+h0vMyIeRN0LwJKt5Dhu+1HNxWMEcGqEl+pFJrCZpMpaqp62b16ias3TupUHL/Jd/V594TyPDytY8kLP+asw0wr3RwnOdKjzHqdBQz96sAgKFuss6HZW9KEjLcyFTWOgDqvapw163BRfGUj3tpoumGXYkmV3gQ0NaPVR/CLTfPuY2WzMX0hSwu18lt2R2/ogzLcxUlwiSsFfQJZoRUUi0rztivrvpxKXpeQNNtOtRlZzDjsvh+VNDIlwpPY4hExtAiGOGVQR5Wqn9Me4ynWTY/QpUfdVhtaRPVZqZ/EPrkGpMq9Ua5SbU+0cWNdEvN2Lu0PPrxEzEUg/8Ewlm/LE0YklaT7RpkOwJK2H9iJgCZff+JlOb/ZdoC2qDJv6hFB0XFH7VQUfBlS0qFHwnyJAxnDuJTNT9fPwb0+kuIoZjA6tLtPuvxDMCvlnZOdO3aZWW0OYlvZNuTzRk62o7tEjvGU2usedSfvf/jYO3vAM9dInus/D/4R4SQmI8Z889bga3LJlZeozbIwRPXhR6wuwCk3JfMtzAWPnl4jw5ZO86t2XI5+k+guCXx25p0t3KOFMo4mGcmw1miacsnPhDxcsofdEckZt/u7OfBDJMM3Jn1fCFyMpOV31i5OCNTDmTFQfA6o2iavkRUYru84qLiYrg27e8FZzfotraHdQKVAsCAwEAAQKCAgEAqGqQVW2ZfMK0F4Sa/h1MzAgZ975CG9dmer3iAhs7ZPKh4TsbZe0E3CGmrmN7CJIB39/d63YFsbUVkA4SBaze/NOP0oU5e/Djamr75QpRIYC3kCtG8IUTRwpCynszmzPMF2oLMjNBqxofZawMF90qVP8zQvY8MhS1MrLtJhT9JvzE5SMVdoiMruQh73Xw8VqKlf1NqrvChE1brj8RBjQn22bvFUdFq47P8pCy85WnEefMkVkaA21DBxJ2heewfk/dYKXe9UqytTgC8FPzcR5IHGJi2R/ncSNopjnjFl+vYHliqHgRdUzYLgjWzj/uujHcygWsi8KRIs0A4WTDZXchSkFu4sduWRMECsmVh8g7F85LaQkgNlv4u3ugN2q8zF4b85i4xBJERgvkyvNkm928dY9zZ5jb2rSAMLxPlM/zVsMUeUxwZyr1GnOaRruU2ryFlDvopjUylFEC1ju8MJ67eS4j4eWCON1xVTmjFP+b6W1zCqaRSKz0i7AxVShS1zj6H90NN+C4rVx9TXoZxJBvfIVWqDsRmQvXjZY4H42k2M0IvtKDyku77LLEvJcIG44+Dbm1KCXtHNCcg8UJDzqPglSFBSCTinyyjuGPrlB0Z1nyz9effTzg0EOf+A/KZUeh4XyGqCpzUX//rqc4u7L6+ADV43/QohBpYruZZTUCGhECggEBALYsFeB9P0rqgaAeGFF2VJQLsmEf0LmznNPdEJT4FPVM+DpF4n86WJfZWtqFQkzt5aTYqglyAGSHreDnOKRIQvdhussYSohnqPZoJzx26tXNnb9T8jy3msI3GPZDLnR5+NlaveK6bTscoKBjJj0p70nWCYGlYQA2y4G9vEE5r+yQN6dAU/rg3T9i8qnHasfQwP0ZP7JTrfswA5DXJNtT/ZwY27Dp3fxj0RDAg654h7q4BwR8LSdZLxGf0UFhVrPxbTNCabPVuDrOfueEUpm7nbZHgbZ3ptbhlCDaqqkEYXwmWq/gVnoclCbkMcdag+/A7ob36Bjg1ympHNKeJvYvrhkCggEBAO5g+afwfoDSra93IUjRdAHPioQVrH/srzLhQNja7DklZJhZZ78KR2hFJbWxuZDHR6j/bSUTAAARATF3Eei32IWx/juKDI7ocpPozxQNoIjtKD0OT0Daw0+nsxRDnKmqPHpgEpgl8k+oG/eKFxb1sgciWmc2S9aIxSQrXV+wjM3u3M4yobfzvcrTLhX5GvAUVseG/wkekKizj4S9vzmC2VMaQezhCMU22jcrIQiSqCwqPmbnNo4cxnDFuzRi7dayxlz4xbcM5iXZY8dmg6A1375cQjql4xvt6tVocUywNql9Cx1yY4NyZ0N7hb1/6RSgJDx/u4VgbpNV7GnQm2DXT8MCggEBAI/GDWIGF0y99Z30AodQV4IcFSU4Idhd3BkNcIfRn2DV5VbATvjQiJkXbu/lmiTy4HoQkWow8gRlXKKSeg6WBVwOYojlW/V5skz+eHDs/XvN8oDM9PJciaRcLbQ141UD6pVIW3K0ZX7wogjTF5vQG81vQkNyzTKJDGYR46CqsaCHVZUHXQA0NglPw2qhOzIGHDnkknPgPQBwrW/DjJAZIp/usnxWpt8JvDd3aLXq5FxF3yv4AP78EPzc4B60fuQ3V1LMSHYo52RqEpgPw80W2GrC1qm2lxMiJ3Eiguwvy+xarNn/uOBY68gh8vN+CYDQCLC2uRPhZ462rEvBi8hiawkCggEBANZJ8uQXe4EO4vfTXeZ585EVIu3uFe3BtRVGDOdkleohRTb3WB4SfXKshmO5aplNq4uuYk1rsRpeLvZqlXzgmBJHmcWoKfXl2+o+5LigL2on135beL9SaTUYChHzXcffsxJHfy+rHRKiitGSH4OSRwHGzgHue2pV9PK40O2OZmVRjskGFv6obDsCcHFsR9z+S6x+HJH0GhKtqByp/lcS246rEgyBl0LCNpRVfxKX0/ov13zl6NMD5xfFiK5lKG1StKMrN4GAZPwtWlcMPtMs2v/jK95Q9cJLtEk35HIODnV6ZR2JkQ+/Ljkpt2ZMsBjMhQalxMr3jy9/lFDjKGp748UCggEAQ2Ic72xrtMkb3V9yOJmbWutkTO/wtiHsBBqsd3fbSW3aw/hqoSAmGz/2LULugxUUc7HqZOKTyA0B2C5oV/nZr/wgNvdQEF/cxbSjiLbQUwxAwPzIL6DJBhMpLH4a9QesaJ3QYaAO9fbytlYC9R7p7cKRD1JCOsZ414KJOA795658yCwBoxynqnDmkVjfqA9gix5Q9/VyBkXcTjOhgTLURJXjfXpV5YEpXB4Lv2FM+oNMAJEQ7foytz3kXKqDZ0RS/BhQsAiPtKZUjAiFfqNvIRDR4cr9gJJzUhQ7ZTKXLCKGbA5EYUl6DA95eivzwr+0v5BhfGY0zElDl6HjCK45dw==-----END RSA PRIVATE KEY-----Public Key:-----BEGIN PUBLIC KEY-----MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAqaH+h0vMyIeRN0LwJKt5Dhu+1HNxWMEcGqEl+pFJrCZpMpaqp62b16ias3TupUHL/Jd/V594TyPDytY8kLP+asw0wr3RwnOdKjzHqdBQz96sAgKFuss6HZW9KEjLcyFTWOgDqvapw163BRfGUj3tpoumGXYkmV3gQ0NaPVR/CLTfPuY2WzMX0hSwu18lt2R2/ogzLcxUlwiSsFfQJZoRUUi0rztivrvpxKXpeQNNtOtRlZzDjsvh+VNDIlwpPY4hExtAiGOGVQR5Wqn9Me4ynWTY/QpUfdVhtaRPVZqZ/EPrkGpMq9Ua5SbU+0cWNdEvN2Lu0PPrxEzEUg/8Ewlm/LE0YklaT7RpkOwJK2H9iJgCZff+JlOb/ZdoC2qDJv6hFB0XFH7VQUfBlS0qFHwnyJAxnDuJTNT9fPwb0+kuIoZjA6tLtPuvxDMCvlnZOdO3aZWW0OYlvZNuTzRk62o7tEjvGU2usedSfvf/jYO3vAM9dInus/D/4R4SQmI8Z889bga3LJlZeozbIwRPXhR6wuwCk3JfMtzAWPnl4jw5ZO86t2XI5+k+guCXx25p0t3KOFMo4mGcmw1miacsnPhDxcsofdEckZt/u7OfBDJMM3Jn1fCFyMpOV31i5OCNTDmTFQfA6o2iavkRUYru84qLiYrg27e8FZzfotraHdQKVAsCAwEAAQ==-----END PUBLIC KEY-----

Encrypting our file using the public key

We will be using this image file:

MD5 (img.jpg) = 33a76ad3ce6633960ce300db2e625bdb

and this encryption script:

The resulting encrypted file:

MD5 (encrypted_img.jpg) = 595c7c94f4f80fc02a67f325f034fc22iFVwskJ4974C+5NuQg2lbbjuPOjoAsub1pb7Tcc0Yhtu/1oxIIbMLUMMdOC0Bu+d32Y8OQ7YxICggtHRgjLiafyG0c9WPCdn6Ay/mZ4qBVD1AYSUfGxta6C6PvQXih4oPy6MeNnG8Sgpyuv2UhS34rrIKLb4z7NaELeW2s2EVkwxGRrff9/+JQvdHJjGIcnCPckx8pnCn6MT2wpLwFpD4coJ5SZ1rY+zC1A2PRFYl8vm4h+TNfalRV3qvzNvtYHqGpGvL6xyHyeiUSOI7d7EkoTGPVg8hd7g3VimB1m9g8QYPG4VFAMaigPHounwPxEIKMBexqRrJeY0rO6GyK+oyj7gDgz7EgRUDoyTTC/dhqCSdqZ8Wf9M2tDcHUMez3LZ6ExWUa71+8vHNraMCFNw8UPdkwNYtYSUjsLg2LYpRkt3RGCGHFvvkdkBrVwStSz7uxab7aITKcHm5IEWwP7ztwoRssdL+cOjoOEBhBGv6d25nvzxKQadztbsm6zgchdnt9m6WGG/rul7z+nnAzXYuLcp1okLcwwNVxyP+KvoTL+xv6a4OwciN0t5HCYeBmczazkfIORyJEeVKnVoDFYMTq1SwKEMUlxCYMzGdT8ANpi2lbXImTSDwyB454DylcoMZ8vqkKrNFlUSRSMV8qs4wzc4mDWM7ScLYmpX/u/Nu/xGQxIgkeXm35zwjbpG05xPspHEiz0IeOv/Q9cVduiQkK1hxTnSN9dfgsy9nDWXFuQsViiyOXxoJ5zKV7LYDMkdAzwMAIrvm8CUcmbh3PcSxih0xSEvvAgN/szBUMbc7v2ol+JGmFeCWcU3iBFzNQwC5n+QrKB3BzCrJHvutmvHFzccR5dwCSXlw/bgI+D10VXHv89fL//rR8qDLfJ1LuZwidFIwPzunHgCD0sVkedrF4DJvi9dnrFVc8VOYsofPFCYnMIwTo2r6UPAFoIzYMO546OfkmMKO44l4FmHgPOurS93SQEUnyuP4ZRk0hYzv8PjmBkB7MdeFZHfnEMrkrOHfA5Iys1eLpd3b7AQwskqzSUTSkHebPn/k2kG7rzvrwAYUYH98CsafkZNDcc6bz/F+E9JWpH79pcw+JNzprRUaFgZbXpJycmQaCAoaCO4hPD+WXfHRqZn02BRibCr95HveU92uh9TTtEv0OJ2DyXIzoD0d0sRLS7AjpizahTo+QedjR64PMcFz8x1GxN7DoRZoNWYSCdJpfbz3B1omwUHi2qaWERDolTGE3n550LSfhl/vzP/3Z/D3nmfWe5rnDmtFWLvPS+OpE1vRpBAh69ZgZk8K7bxTKnyoD29TbLQjwd1GN14a/ITptei88eltiq4bd9wNBm9y88XUk8BQ6NJZC3mbeGJz8m3fSKzoPom3xLg3slHfgLBlCwxgS1IIruihvrrm4wsxc+qYN8sAAR0
------------------------------TRUNCATED-----------------------------

Decrypting our file using the private key

We can use the following decryption script:

MD5 (img.jpg) = 33a76ad3ce6633960ce300db2e625bdb
MD5 (decrypted_img.jpg) = 33a76ad3ce6633960ce300db2e625bdb

Hope this helps someone!

--

--

Ismail Akkila

I live and breathe technology. Curious about programming, bitcoin and cybersecurity.