1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/alone88-bv2av

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Bilibili.php 1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Alone88 Отправлено 01.04.2020 15:31 861d3dc
<?php
/**
* @author : Alone88
*
* algorithm:https://www.zhihu.com/question/381784377/answer/1099438784
*
* Bilibili AV BV 互转
*
* Class Bilibili
*/
class Bilibili
{
protected $tr = "fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF";
protected $xor = 177451812;
protected $add = 8728348608;
protected $s = [11, 10, 3, 8, 4, 6];
/**
* BV 转 AV
*
* @param $bv
* @return int
*/
public function dec($bv)
{
$r = 0;
$tr = array_flip(str_split($this->tr));
for ($i = 0; $i < 6; $i++) {
$r += $tr[$bv[$this->s[$i]]] * (pow(58, $i));
}
return ($r - $this->add) ^ $this->xor;
}
/**
*
* AV 转 BV
*
* @param $av
* @return string
*/
public function enc($av)
{
$tr = str_split($this->tr);
$bv = 'BV1 4 1 7 ';
$av = ($av ^ $this->xor) + $this->add;
for ($i = 0; $i < 6; $i++) {
$bv[$this->s[$i]] = $tr[floor($av/pow(58,$i)%58)];
}
return $bv;
}
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/alone88-bv2av.git
git@api.gitlife.ru:oschina-mirror/alone88-bv2av.git
oschina-mirror
alone88-bv2av
alone88-bv2av
master