2012-10-24 12 views
6

में डिक्रिप्ट करें मैं पाइथन के साथ कुछ पाठ को एन्कोड करने के लिए दो फिटिंग कोड स्निपेट ढूंढ रहा हूं, जिसे php में डीकोड किया जाना है। मैं कुछ "आसान" और संगत खोज रहा हूं, और मेरे पास बहुत अधिक एन्क्रिप्शन अनुभव नहीं है।पायथन के साथ डेटा एन्क्रिप्ट करें, php

अगर कोई कामकाजी उदाहरण दे सकता है तो यह बहुत अच्छा होगा!

+2

भाषा चाहिए मामले के रूप में नहीं जब तक आप एक उचित एन्क्रिप्शन चयन के रूप में पूर्व-मौजूदा पुस्तकालयों के साथ/डिक्रिप्शन एल्गोरिदम। –

+0

क्या आप एन्कोड/डीकोड या एन्क्रिप्ट/डिक्रिप्ट करना चाहते हैं? http://stackoverflow.com/questions/4657416/difference-between-encoding-and-encryption – ale

+0

एन्क्रिप्शन: एक स्पष्ट पाठ को कुछ अपठनीय पात्रों को वापस करने वाली पायथन लिपि दी जाती है। इसे मूल पाठ लौटने, एक PHP स्क्रिप्ट दिया जाता है। पाइथन और PHP स्क्रिप्ट दोनों में एक कुंजी का उपयोग किया जाता है। – Alex

उत्तर

14

अजगर एन्क्रिप्ट

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 डिक्रिप्ट (इनकोडिंग पाठ ध्यान दें बस कॉपी/ऊपर अजगर प्रिंट से चिपकाया जाता है)

<?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

सही! बहुत बहुत धन्यवाद – Alex

0

आप पाइथन के लिए python-mcrypt का उपयोग कर सकते हैं। PHP में आपके पास mcrypt करने के लिए एक संबंधित डिक्रिप्टिंग फ़ंक्शन है। मुझे उम्मीद है कि documentation php में यह स्पष्ट करने के लिए पर्याप्त है कि मैक्रिप्ट के लिए डिक्रिप्ट कैसे करें। सौभाग्य।

संबंधित मुद्दे