HotCRC未公開發布的高版本窮舉輸入規則(V3.01)

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於雁塔菜地

HotCRC未公開發布的高版本窮舉輸入規則(V3.01)


分享到:


相關文章: