HotCRC未公開發布的高版本窮舉輸入規則(V3.01)
text
?poly-poly
#init-init
^xor-xor
$start,length,stop,%*Nn(input ^data@str:code+n-n!n&m),1~9DdPpKkYyNT(output +n-n!n&m),CRC4~64LlRr?poly#init:code
其中:
text為明文和結果流或結果和明文流(由stop的-+決定),可以多組,並可不等長。選用三組最佳,可以保證準確和快捷。
特別注意:明文流之間和結果可以用空格隔開。
poly為權值,可以多組多行,長度必須和權值等長。-表示對某段權值窮舉(任意間隔運行不會崩潰)。
init為初值(出值),必須以#結尾,可以多組多行。-表示對某段初值的窮舉。
特別注意出值是由初值而決定的。
特別注意:每行之間可以用空格隔開,但不推薦。
$規則識別符號,可以多組。
第1字段:
start明文起始位置(>=0,從頭開始向右)。
第2字段:
length明文長度(<=0,從結果開始向左)。
第3字段:
stop結果的終止位置(<=0,從尾開始向左,即明文和結果流)。
特別注意:
stop以+號開始且>=0,從頭開始向右,即倒置,結果+明文流,而一般為明文流+結果。
第4字段:
%為有效明文的排列組合。
*Nn有效明文的反序(小端,例如1234表示為0x3412)。
其中:
*表示截取後明文整個長度反序。
N表示和權值等長(CRCn)反序。
n表示數字16,20,...32,36,40,...64等,建議採用N。
input為輸入變異
其中:
^n,固定值16進制數0xn異或, 可以任意長度。
@str:code,字符串str長度為0,2,4,8,16...的位置異或,當str為空(長度為0)時,為最簡單的位置異或。
:code為異或字符編碼
:H,HEX,16進制編碼
:A,ASCII,英文字符編碼。
:G,GB2312-80,國標漢字編碼。
:U,UTF-8,多國字符編碼。
:P,HotCode,菜農HotPower字符編碼。
+n&m,m位左環移n位,n=0~m-1。m為8位(1字節)(可忽略)。
-n&m,m位右環移n位,n=0~m-1。m為8位(1字節)(可忽略)。
!n&m,位n和位m進行交換,可以多對位交換。
第5字段:
1~9是排序步長,CRC4默認為1,其它默認為2,必須在首位。
D顯示所有的運行順序標號和展開的全部數據流。
d只顯示窮舉成功的運行順序標號和展開的全部數據流。
P當明文長度不是權值長度的倍數時要求窮舉初值(非常耗時)。
p當明文長度不是權值長度的倍數時只要求窮舉可信度高的初值(耗時但只做1/4)。
K為只取可逆(左移為奇數,右移為最高位為1)的權值。
k為所有權值(不要可逆的√)。
Y找到權值並可信立即退出窮舉。
y只要找到權值立即退出窮舉。
N表示對權值反轉(特別注意不是反序,例如1021表示為0x8408)。
T表示通過等長明文時對初值窮舉,例如#0000~FFFF在等長明文時默認只需初值0000#,因為它窮舉無意義,T參數取0000~FFFF#。
Q表示窮舉CRC簡寫式驗證。
output輸出變異
+n&m,m位左環移n位,n=0~m-1。m為8位(1字節)(可忽略)。
-n&m,m位右環移n位,n=0~m-1。m為8位(1字節)(可忽略)。
!n&m,位n和位m進行交換,可以多對位交換。
第6字段:
CRC標識,4~64表示CRC4~CRC64。
L強制左移CRC,校驗和為大端(例如1234表示為0x1234)。
l強制左移CRC,校驗和為小端(例如1234表示為0x3412)。
R強制右移CRC,校驗和為大端(例如1234表示為0x1234)。
r強制右移CRC,校驗和為小端(例如1234表示為0x3412)。
?poly為權值
#init為初值或出值
:code為數據流字符編碼
:H,HEX,16進制編碼
:A,ASCII,英文字符編碼。
:G,GB2312-80,國標漢字編碼。
:U,UTF-8,多國字符編碼。
:P,HotCode,菜農HotPower字符編碼。
特別注意:
所有字母參數優先級都是先大寫後小寫,先L後R。
參數P和p都將窮舉初值碰撞,對於不可逆CRC且明文長度不是權值長度的整數倍時,一個出值可能對應多組初值碰撞。
所有標註都可以省略,但是位置必須用英文的逗號隔斷!
HotCRC窮舉規則實例:
$,,,%@HotPower,+13&16,CRC16L?1021#0000#FFFF@A;//CRC16左移,校驗和為大端,字符串默認@A。
$,,,@菜農漢字:P,,CRC16L:H;異或漢字字符串,採用HotCode漢字編碼,數據流為HEX編碼
$,,,^1234,,CRC16r:P;//異或固定值0x1234(大端,數據流採用lHotCode編碼)。
$,,,@,!0&1,CRC16L:U;//位置異或,校驗和位0和1交換。數據流採用UTF-8編碼。
$,,,%+4,!1&2!4&10,CRC16r?8048;//排列,左環移4位,校驗和位1和位2,位4和位10交換;權值0x8048。
$,,,*,-13,CRC16L:A;//反序,校驗和右環移13位。數據流採用ASCII編碼。
$,,,*16+4,+8,CRC16r:G;//反序,數據字節高4位和低4位交換(左環移4位),校驗和高字節和低字節交換。數據流採用gb2312編碼。
?AAAA;//指定權值AAAA。
?0000-FFFF;//窮舉權值,從0x0000到0xFFFF。
#0000;//特定初值0000(正運算),特定出值0000(逆運算)
^33;//異或一個固定值0x33。
等效為@3:A,或等效為@3:U,或等效為@3:H。
^0000-FFFF;//窮舉異或值0x0000到0xFFFG。
@;//位置異或,等效為^000102…FDFEFF。
:H;//數據流為hex編碼。
:A;//數據流為ascii編碼。
:G;//數據流為gb2312-80編碼。
:U;//數據流為utf-8編碼。
:P;//數據流為hotcode編碼。
@HotPower:A;//異或值編碼為ascii
@國標漢字:G;//異或值編碼為gb2312-80,只能在IE下運行
@漢字編碼:U;//異或值編碼為utf-8
@雁塔菜農:P;//異或值編碼為hotcode(菜農HotPower漢字編碼方案)
特別注意:
@和^都將使用crcStr[];
其中^的字符串編碼默認:H
菜農[email protected] 2019.3.3於雁塔菜地
閱讀更多 雁塔菜農 的文章