Encrypt data with python, decrypt in php
python encrypt
from Crypto.Cipher import AESimport base64import os# the block size for the cipher object; must be 16, 24, or 32 for AESBLOCK_SIZE = 32BLOCK_SZ = 14# the character used for padding--with a block cipher such as AES, the value# you encrypt must be a multiple of BLOCK_SIZE in length. This character is# used to ensure that your value is always a multiple of BLOCK_SIZEPADDING = '{'# one-liner to sufficiently pad the text to be encryptedpad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING# one-liners to encrypt/encode and decrypt/decode a string# encrypt with AES, encode with base64EncodeAES = lambda c, s: base64.b64encode(c.encrypt(pad(s)))DecodeAES = lambda c, e: c.decrypt(base64.b64decode(e)).rstrip(PADDING)secret = "332SECRETabc1234"iv = "HELLOWORLD123456"cipher=AES.new(key=secret,mode=AES.MODE_CBC,IV=iv)my_text_to_encode = "password"encoded = EncodeAES(cipher, my_text_to_encode)print 'Encrypted string:', encoded
php decrypt (note the encoded text is just copy/pasted from python print above)
<?php$enc = "x3OZjCAL944N/awRHSrmRBy9P4VLTptbkFdEl2Ao8gk=";$secret = "332SECRETabc1234"; // same secret as python$iv="HELLOWORLD123456"; // same iv as python$padding = "{"; //same padding as pythonfunction decrypt_data($data, $iv, $key) { $cypher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); if(is_null($iv)) { $ivlen = mcrypt_enc_get_iv_size($cypher); $iv = substr($data, 0, $ivlen); $data = substr($data, $ivlen); } // initialize encryption handle if (mcrypt_generic_init($cypher, $key, $iv) != -1) { // decrypt $decrypted = mdecrypt_generic($cypher, $data); // clean up mcrypt_generic_deinit($cypher); mcrypt_module_close($cypher); return $decrypted; } return false;}$res = decrypt_data(base64_decode($enc), $iv, $secret);print rtrim($res,$padding);?>
You can use python-mcrypt for python. In php you have a corresponding decrypting function to mcrypt. I hope thedocumentation in php is clear enough to show how to decrypt for mcrypt. Good luck.