最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

BV與AV號的算法流出?有點恐怖。

2020-03-24 23:53 作者:霧削木FHZ  | 我要投稿

????最近B站的最大改動就是將AV號改為了BV號,BV號在AV號的基礎(chǔ)上更加難記,而且BV號使用了52進制,里面包括數(shù)字+小寫字母+大寫字母;

????在常人看起來AV號和BV號之間并沒有什么聯(lián)系,而BiliBili其實只是添加了一個可以當(dāng)做AV號的BV號,也就是說現(xiàn)在AV號還是可以用的,但你點進去的視頻默認導(dǎo)航是BV號,所以很多人一時不知道怎么看到視頻的AV號,一般的在BiliBili的官方Api接口中提供BV號便可解析出來視頻的相關(guān)信息,里面也就包括了AV號和BV號,在這種解析方式下,很多規(guī)則是無法使用的,比如斷網(wǎng)之后無法連接api接口,就會導(dǎo)致解析不出來,以及api接口的延遲等。

????那么在知乎上就有位大佬,mcfx,他通過對大量av號和bv號的分析,以及對進制的理解,得到了Python版的算法;放圖:

BVAV互轉(zhuǎn)Python代碼

????那么這篇代碼因為使用的是python的代碼,在Up的能力下無法得到解析,首先就是計算溢出的問題,其次就是對python代碼過于生疏,所以Up在將其轉(zhuǎn)換到一半的時候就放棄了,還是API接口真香~

????那么今天的情況就比較好轉(zhuǎn),在其他的大佬帶領(lǐng)下,很多關(guān)于BV和AV號的運算分析視頻也相繼出來了,那么易語言版的源碼也是出來了,在我們的群內(nèi),Liv也是將C++版的寫出來了;

????那么根據(jù)源碼大概是這個樣子的:

原版{

.版本 2

.程序集 窗口程序集_啟動窗口

.程序集變量 s, 整數(shù)型, , "10"

.程序集變量 TR, 文本型, , "58"

.子程序 __啟動窗口_創(chuàng)建完畢

.局部變量 index, 整數(shù)型

s = { 10, 9, 2, 7, 3, 5 }

.計次循環(huán)首 (58, index)

? ? TR [index] = 取文本中間 (“fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF”, index, 1)

.計次循環(huán)尾 ()

.版本 2

.支持庫 eCalc

.子程序 AvToBv, 文本型

.參數(shù) av, 長整數(shù)型

.局部變量 x, 大數(shù)

.局部變量 i, 大數(shù)

.局部變量 Bv, 文本型, , "10"

.局部變量 a58, 大數(shù)

.局部變量 index, 整數(shù)型

.局部變量 a, 大數(shù)

.局部變量 ret, 文本型

i.導(dǎo)入數(shù)字 (位異或 (av, 177451812))

x.導(dǎo)入文本 (“8728348608”)

x = x.加 (i)

a58.導(dǎo)入數(shù)字 (58)

Bv = { “1”, “”, “”, “4”, “”, “1”, “”, “7”, “”, “” }

.計次循環(huán)首 (6, index)

? ? .如果 (index > 1)

? ? ? ? i = a58

? ? ? ? .計次循環(huán)首 (index - 2, )

? ? ? ? ? ? i = i.乘 (a58)

? ? ? ? .計次循環(huán)尾 ()

? ? .否則

? ? ? ? i.導(dǎo)入數(shù)字 (1)

? ? .如果結(jié)束

? ? Bv [s [index]] = TR [x.整除 (i).求余 (a58).導(dǎo)出整數(shù) () + 1]

.計次循環(huán)尾 ()

ret = “BV”

index = 0

.計次循環(huán)首 (10, index)

? ? ret = ret + Bv [index]

.計次循環(huán)尾 ()

返回 (ret)

.版本 2

.支持庫 eCalc

.支持庫 spec

.子程序 BvtoAv, 長整數(shù)型

.參數(shù) BV號, 文本型

.局部變量 index, 整數(shù)型

.局部變量 av, 大數(shù)

.局部變量 a58, 大數(shù)

.局部變量 BV, 文本型, , "10"

.局部變量 index2, 整數(shù)型

.局部變量 i, 大數(shù)

.局部變量 i_, 大數(shù)

.計次循環(huán)首 (10, index)

? ? BV [index] = 取文本中間 (BV號, index, 1)

.計次循環(huán)尾 ()

調(diào)試輸出 (“BV:”, BV)

index = 0

a58.導(dǎo)入數(shù)字 (58)

.計次循環(huán)首 (6, index)

? ? .如果 (index > 1)

? ? ? ? i = a58

? ? ? ? .計次循環(huán)首 (index - 2, )

? ? ? ? ? ? i = i.乘 (a58)

? ? ? ? .計次循環(huán)尾 ()

? ? .否則

? ? ? ? i.導(dǎo)入數(shù)字 (1)

? ? .如果結(jié)束

? ? .計次循環(huán)首 (58, index2)

? ? ? ? .如果真 (TR [index2] = BV [s [index]])

? ? ? ? ? ? i_.導(dǎo)入數(shù)字 (index2 - 1)

? ? ? ? ? ? i = i.乘 (i_)

? ? ? ? ? ? 跳出循環(huán) ()

? ? ? ? .如果真結(jié)束

????.計次循環(huán)尾 ()

? ? av = av.加 (i)

? ? 調(diào)試輸出 (AV號.導(dǎo)出長整數(shù) ())

.計次循環(huán)尾 ()

i.導(dǎo)入文本 (“8728348608”)

返回 (位異或 (av.減 (i).導(dǎo)出長整數(shù) (), 177451812))

}

那么這個代碼和那篇的python代碼是有很多不同的,Up也是有很多地方搞不懂,真讓人頭大;

????UP主對照著代碼流程自己寫了一遍BV轉(zhuǎn)AV的,用了中文的變量希望大家能看懂:

UP主版的{

.版本 2

.支持庫 eCalc

.程序集 窗口程序集_窗口1

.程序集變量 table, 文本型, , "0"

.程序集變量 tr, 文本型, , "0"

.程序集變量 xor, 長整數(shù)型

.程序集變量 s, 整數(shù)型, , "10"

.程序集變量 add, 大數(shù)

.子程序 _窗口1_創(chuàng)建完畢

.局部變量 i, 整數(shù)型

' fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF

.計次循環(huán)首 (58, i)

? ? 加入成員 (table, 取文本中間 (“fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF”, i, 1))

.計次循環(huán)尾 ()

復(fù)制數(shù)組 (tr, table)

s = { 10, 9, 2, 7, 3, 5 }

xor = 177451812

add.導(dǎo)入文本 (“100618342136696320”)

.版本 2

.支持庫 eCalc

.支持庫 spec

.子程序 BVAV, 長整數(shù)型

.參數(shù) BV號, 文本型

.局部變量 計次X, 整數(shù)型

.局部變量 計次X2, 整數(shù)型

.局部變量 BV, 文本型, , "10"

.局部變量 AV號, 大數(shù)

.局部變量 運算i, 大數(shù)

.局部變量 運算i2, 大數(shù)

.局部變量 臨時處理大數(shù), 大數(shù)

臨時處理大數(shù).導(dǎo)入數(shù)字 (58)

.如果真 (取文本左邊 (BV號, 2) = “BV”)

? ? BV號 = 取文本右邊 (BV號, 取文本長度 (BV號) - 2)

.如果真結(jié)束

.計次循環(huán)首 (10, 計次X)

? ? BV [計次X] = 取文本中間 (BV號, 計次X, 1)

.計次循環(huán)尾 ()

.計次循環(huán)首 (6, 計次X)

? ? .判斷開始 (計次X > 1)

? ? ? ? 運算i.導(dǎo)入數(shù)字 (58)

? ? ? ? .計次循環(huán)首 (計次X - 2, )

? ? ? ? ? ? 運算i = 運算i.乘 (臨時處理大數(shù))

? ? ? ? .計次循環(huán)尾 ()

? ? .默認

? ? ? ? 運算i.導(dǎo)入數(shù)字 (1)

? ? .判斷結(jié)束

? ? .計次循環(huán)首 (58, 計次X2)

? ? ? ? .如果真 (tr [計次X2] = BV [s [計次X]])

? ? ? ? ? ? 運算i2.導(dǎo)入數(shù)字 (計次X2 - 1)

? ? ? ? ? ? 運算i = 運算i.乘 (運算i2)

? ? ? ? ? ? 調(diào)試輸出 (運算i.導(dǎo)出長整數(shù) (), 計次X2, 計次X)

? ? ? ? ? ? 跳出循環(huán) ()

? ? ? ? .如果真結(jié)束

????.計次循環(huán)尾 ()

? ? AV號 = AV號.加 (運算i)

.計次循環(huán)尾 ()

運算i.導(dǎo)入文本 (“8728348608”)

返回 (位異或 (AV號.減 (運算i).導(dǎo)出長整數(shù) (), xor))

}

具體是哪點Up主沒能搞懂,相信大家對照一下源碼與Python的代碼就知道了;

首先就是 tr 和 xor ,其次就是 add 徹底不見了;當(dāng)然 s 也從 {11,10,3,8,4,6,2,9,5,7}

變?yōu)榱耍簊 = { 10, 9, 2, 7, 3, 5 }

講了這么多,最后奉上下載地址吧。

原版的:https://www.lanzous.com/iam1qpe

UP主的:https://www.lanzous.com/iam1qqf


BV與AV號的算法流出?有點恐怖。的評論 (共 條)

分享到微博請遵守國家法律
万山特区| 垦利县| 宁远县| 襄汾县| 娱乐| 呼图壁县| 西青区| 南皮县| 霍林郭勒市| 和平区| 滦平县| 秦皇岛市| 万宁市| 潼南县| 衡山县| 淮阳县| 富阳市| 石门县| 九江市| 鹿泉市| 东城区| 鲁甸县| 池州市| 新兴县| 兰坪| 宁明县| 永康市| 南陵县| 泰和县| 庆元县| 宁安市| 阿尔山市| 乃东县| 彰武县| 乡城县| 姜堰市| 彰化县| 沭阳县| 兰溪市| 满城县| 高安市|