Я хочу эту функцию из Python в 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]));
}
}
Заранее большое спасибо за помощь.
Я надеюсь, что это может помочь вам.
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, '', ''));
Других решений пока нет …