2015-08-18 2 views
1

Мне нужна эта функция из python в php. Ид длинный.python function in php

def encrypted_id(id): 
byte1 = bytearray('3go8&$8*3*3h0k(2)2', 'utf-8') 
byte2 = bytearray(id, 'utf-8') 
byte1_len = len(byte1) 
for i in range(len(byte2)): 
    byte2[i] = byte2[i]^byte1[i % byte1_len] 
result = md5(byte2).digest().encode('base64')[:-1] 
result = result.replace('/', '_') 
result = result.replace('+', '-') 
return result 

, что у меня есть:

public function encrypted_id($dfsid) { 
    $chars=(string)$dfsid; 
    $key ='3go8&$8*3*3h0k(2)2'; 
    $byte1_len=count($key); 
    for($i = 0; $i < count($chars); $i++){ 
     //print_r(unpack("H*",$chars[$i])^unpack("H*",$key[$i % byte1_len])); 
    }  
} 

Большое спасибо заранее за помощь.

+0

В чем вопрос? – DevDonkey

+1

Хеширование - это не шифрование. И MD5 не является безопасным алгоритмом хеширования. –

+0

Как это сделать в php: byte2 [i] = byte2 [i]^byte1 [i% byte1_len] и этот md5 (byte2) .digest(). Encode ('base64') [: - 1] – user1844859

ответ

1

Надеюсь, это может вам помочь.

function encrypted_id($dfsid) { 
    $key ='3go8&$8*3*3h0k(2)2'; 
    $key_len = strlen($key); 
    for($i = 0; $i < strlen($dfsid); $i++){ 
     $dfsid[$i] = $dfsid[$i]^$key[$i % $key_len]; 
    } 
    $raw_code = base64_encode(md5($dfsid, true)); 
    $code = str_replace(array('/', '+'), array('_', '-'), $raw_code); 
    return $code; 
} 
$id = 3335918278827174; 
echo encrypted_id(number_format($id, 0, '', ''));