1.一種基于混沌系統(tǒng)的單向加密方法,其特征在于,該基于混沌系統(tǒng)的單向加密方法包括以下步驟:
第一步,隨機輸入一個任意長度的字符串str;
第二步,將該字符串按照某種編碼方式轉(zhuǎn)換成二進制碼,并計算出該二進制長度len_str;
第三步,判斷該長度len_str是否為3的倍數(shù),即len_str%3=0;如果不是3的倍數(shù),則進行第四步;若是則劃分為len_str/3個長度為3bit的二進制組;然后在每個二進制組前填充一個0,跳轉(zhuǎn)到第5步。
第四步,如果不是3的倍數(shù),則在前面添加len_str%3個0在二進制字符串前面,劃分為個長度為3bit的二進制,然后在每個二進制組前填充一個0,再進行第五步;
第五步,每個二進制組按BCD編碼的方式進行轉(zhuǎn)換成一個數(shù)ai,然后將所有ai相加得到一個值C,C=a1+a2+...+an;再將所有數(shù)ai拼接成一個大數(shù)M,M=a1*100+a2*101+a3*102+...+an*10n-1;其中,
第六步,判斷C是否大于K,如果大于則C=[C/2],再重復(fù)此步驟,若C小于K,進行第七步;
第七步,計算X0=M/10y;u=4-X0/10,u取小數(shù)點后位;
第八步,帶入Logistic混沌方程公式Xn+1=uXn(1-Xn),進行循環(huán)計算C次,得到值Xc;
第九步,以Xc為初始值,再帶入Logistic混沌方程迭代4*N次,每次迭代的結(jié)果記為Xi;Xi>=0.5,則記1;Xi<0.5,則記0,共有4*N個0或1;
第十步,再以四個0或1的二進制為一組,轉(zhuǎn)換成一個16進制的字符,最后拼接成一個固定長度為N的字符串,該字符串為最后的密文;
其中,ai表示某四個二進制按照BCD碼轉(zhuǎn)換成一個數(shù);C表示所有ai加起來的和,即C=∑ai,i∈[1,y];len_str表示用戶隨機輸入的任意長度字符串轉(zhuǎn)換的二進制編碼的長度值;y表示ai的個數(shù),M表示由ai組合成的一個數(shù),M=a1*100+a2*101+a3*102+...+ay*10y-1。
2.如權(quán)利要求1所述的基于混沌系統(tǒng)的單向加密方法,其特征在于,所述Logistic混沌方程中Xn的初始值為X0,且X0在[0,1]內(nèi);u是混沌方程中的u值,u在[0,4]內(nèi);當(dāng)u<3.57時,Logistic方程出現(xiàn)準(zhǔn)周期性變化,當(dāng)u>3.57后,Logistic出現(xiàn)混沌狀態(tài)。
3.如權(quán)利要求1所述的基于混沌系統(tǒng)的單向加密方法,其特征在于,ai的生成方法:將輸入字符轉(zhuǎn)換的二進制,判斷該二進制長度len_str是否為3的倍數(shù),即len_str%3=0;若是則劃分為len_str/3個長度為3bit的二進制組,然后在每個二進制組前填充一個0;如果不是3的倍數(shù),則在前面添加len_str%3個0在二進制字符串頭部,然后劃分為個長度為3bit的二進制組,然后在每個二進制組前填充一個0,最后每個組按BCD碼的方式進行轉(zhuǎn)換成一個數(shù)ai;
M的生成方法:將所有數(shù)ai拼接成一個大數(shù)M,拼接方法為:M=a1*100+a2*101+a3*102+...+an*10n-1;
X0的生成方法:M是一個長度為y的正整數(shù),利用M生成一個[0,1]范圍內(nèi)的X0,公式表示為:X0=M/10y;
u的生成方法:u為大于3.57的數(shù)使Logistic混沌方程進入混沌狀態(tài),利用X0進行除以10,使之進入[0,0.1)內(nèi),再用4減去該除數(shù)即得到u];公式表示為:u=4-X0/10,u取小數(shù)點后位;
C值的生成方法:先計算C值:C=a1+a2+...+an;然后用for循環(huán)判斷C是否小于某個固定值K,若C小于K,則退出循環(huán),否則進行C=[C/2],再循環(huán)判斷。
4.如權(quán)利要求1所述的基于混沌系統(tǒng)的單向加密方法,其特征在于,所述C是讓X0進入混沌狀態(tài)混沌方程初始迭代的次數(shù);C過大影響整個加密的效率,通過設(shè)置數(shù)K控制C為至少能使K0進入混沌狀態(tài)的最小迭代次數(shù)。