2012-10-24 14 views
6

Bazı metni python ile kodlamak için php içinde kodu çözülecek olan iki kod parçası snippet'i arıyorum. "Kolay" ve uyumlu bir şey arıyorum ve kendim çok fazla şifreleme deneyimim yok.Verileri python ile şifreleyin, php'de çözme

Eğer birisi harika olabilecek bir çalışma örneği verebilirse!

+2

dil olmamalı olsun sürece uygun bir şifreleme seçim olarak Önceden var olan kütüphanelerle/şifre çözme algoritması. –

+0

Kodlamak/şifresini çözmek veya şifrelemek/şifresini çözmek mi istiyorsunuz? http://stackoverflow.com/questions/4657416/difference-between-encoding-and-encryption – ale

+0

Şifreleme: Açık bir metne, okunamayan bazı karakterleri döndüren bir python betiği verilir. Bu, orijinal metni döndüren bir php betiği verilir. Her ikisinde de bir python ve php betiği kullanılır. – Alex

cevap

14

piton şifrelemek

from Crypto.Cipher import AES 
import base64 
import os 
# the block size for the cipher object; must be 16, 24, or 32 for AES 
BLOCK_SIZE = 32 
BLOCK_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_SIZE 
PADDING = '{' 

# one-liner to sufficiently pad the text to be encrypted 
pad = 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 base64 
EncodeAES = 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 şifresini (kodlanmış metin not sadece/yukarıdaki piton baskı yapıştırılan kopya edilir)

<?php 
$enc = "x3OZjCAL944N/awRHSrmRBy9P4VLTptbkFdEl2Ao8gk="; 
$secret = "332SECRETabc1234"; // same secret as python 
$iv="HELLOWORLD123456"; // same iv as python 
$padding = "{"; //same padding as python 
function 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); 
?> 
+0

mükemmel! çok teşekkürler – Alex

0

Python için python-mcrypt kullanabilirsiniz. Php'de, mcrypt'e karşılık gelen bir şifre çözme işleviniz vardır. Ben php içinde documentation umarım mcrypt için şifresini çözmek için yeterince açık olduğunu umuyorum. İyi şanslar.