B2A是由知乎編程大神使用python編寫的B站視頻轉(zhuǎn)換工具。由于B站今日舉行的維護UP主權益,將AV號將全面升級為BV號,與純數(shù)字的 AV 號不同,BV 號是一段由數(shù)字和大小寫字母組成的字符串,經(jīng)過算法自動生成。未來將統(tǒng)一使用 BV 號作為稿件標識。
相關新聞:
維護UP主權益 B站官宣:AV號將全面升級為BV號
B站表示,一直以來,AV號都是B站的視頻稿件的重要標識,為了保護稿件信息安全,容納更多投稿,維護UP主的權益,自2020年3月23日起,AV號將全面升級到BV號。
與純數(shù)字AV號不同,BV號將是一段由數(shù)字和大小寫字母組成的字符串,經(jīng)過算法自動生成,未來統(tǒng)一使用BV號作為稿件標識。
同時,2020年3月23日前生成AV號的相關功能保持不變。例如,已分享的稿件連接,AV號搜索,以及動態(tài)、評論、私信中的高亮跳轉(zhuǎn)。
而用戶在復制BV號或者包含BV號的鏈接后,打開B站APP的同時會自動跳轉(zhuǎn)至該視頻。
此外,近日,嗶哩嗶哩(以下簡稱“B站”)公布了截至2019年12月31日的第四季度和全年未經(jīng)審計的財務報告。
財報顯示,2019財年B站總營收達67.8億元人民幣,同比增長64%,其中第四季度營收同比增長74%,達20.1億元人民幣,與上年同期相比增長74%。
并且,B站月均活躍用戶再創(chuàng)新高達1.3億人,同比增長40%;移動端月均活躍用戶同比增長46%達1.16億人,實現(xiàn)了自2018年上市以來的最高增幅。
發(fā)現(xiàn)方法:
首先從各種渠道的信息來看,應該是 base58 編碼的。設 x 是一個欽定的 av 號,查詢 這些 av 號對應的 bv 號,發(fā)現(xiàn) bv 號的第 12、11、4、9、5 位分別會變化。所以猜測這些是 58 進制下的相應位。
但是直接 base58 是不行的,所以猜測異或了一個大數(shù),并且 base58 的字符表可能打亂了。經(jīng)過實驗,bv 號最低位相同的數(shù),av 號的奇偶性相同,這一定程度上印證了之前的猜想。
接下來找了一些 av 號 x,滿足 x 和 x+1 對應 bv 號的第 11 位不同。設異或的數(shù)為 X,那么 ( 表示異或)。
由于 av 號(除了最新的少量視頻)最多只有 27 bits,所以可以設 。然后可以發(fā)現(xiàn) 只和 和 有關,那么可以枚舉這兩個值(一共 種情況)然后使用上面的式子檢查,就能得到若干可能的 和 。
這里我得到的可能值如下:(左邊是 ,右邊是 )
22 90983642
22 90983643
50 43234084
50 43234085
有奇有偶是因為異或 1 之后也能找到輪換表。而 則使得模 58 的余數(shù)剛好變成 減它。
我取了 b=43234084,然后處理最低位,可以得到一個字符表,即 fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF。
對于更高位,實際上還需要知道 ,這些值也可以 枚舉 58 次得到,最后我得到的值是 。
這時我發(fā)現(xiàn),每一位的字符表是相同的(實際上只對 b=43234084 是這樣的),然后再微調(diào)一下參數(shù)(上面代碼中的兩個 magic number 就相當于這里的 ),最后處理了一下 的情況就得到了這份代碼。