這篇文章給大家分享的是有關(guān)易語(yǔ)言中如何實(shí)現(xiàn)CNA文件加解密數(shù)據(jù)算法的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
創(chuàng)新互聯(lián)公司總部坐落于成都市區(qū),致力網(wǎng)站建設(shè)服務(wù)有成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、網(wǎng)絡(luò)營(yíng)銷策劃、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站維護(hù)、公眾號(hào)搭建、微信小程序定制開發(fā)、軟件開發(fā)等為企業(yè)提供一整套的信息化建設(shè)解決方案。創(chuàng)造真正意義上的網(wǎng)站建設(shè),為互聯(lián)網(wǎng)品牌在互動(dòng)行銷領(lǐng)域創(chuàng)造價(jià)值而不懈努力!
CNA文件加解密數(shù)據(jù)算法
.版本 2 .支持庫(kù) spec .支持庫(kù) iext .程序集 窗口程序集_啟動(dòng)窗口 .子程序 __啟動(dòng)窗口_創(chuàng)建完畢 .局部變量 code, 字節(jié)集, , , 加密密碼 .局部變量 test, 字節(jié)集, , , 要加密碼的數(shù)據(jù)字節(jié)集 .局部變量 i, 整數(shù)型, , , 查看反饋信息 ' 簡(jiǎn)單例子 test = 到字節(jié)集 (“aaaaaaa aaa.*#(中。329}@#¥”) code = 到字節(jié)集 (“中。有 3a#”) CNA數(shù)據(jù) (test, code, 1) 調(diào)試輸出 (到文本 (test)) CNA數(shù)據(jù) (test, code, ) 調(diào)試輸出 (到文本 (test)) ' 直接用一個(gè)文件進(jìn)行加解密測(cè)試。功能完整的。 .子程序 CNA數(shù)據(jù), 整數(shù)型, , 返回?cái)?shù)1表示加密完成,返回0表示解密完成,返回10表示加密或解密碼失敗 .參數(shù) 數(shù)據(jù)集, 字節(jié)集, 可空, 要加密的數(shù)據(jù)集 .參數(shù) 密碼集, 字節(jié)集, 可空, 要加密的密碼集 .參數(shù) 方式, 整數(shù)型, 可空, 1是加密,0或省略是解密 .局部變量 j, 整數(shù)型, , , 計(jì)次變量 .局部變量 i, 整數(shù)型, , , 密碼集長(zhǎng)度 .局部變量 k, 整數(shù)型, , , 數(shù)據(jù)集長(zhǎng)度 .局部變量 lk, 整數(shù)型, , , 計(jì)算對(duì)換對(duì)換位置變量 .局部變量 t, 整數(shù)型, , , 計(jì)算對(duì)換對(duì)換位置變量 .局部變量 對(duì)換位置組, 整數(shù)型, , "0", 存放8個(gè)位置數(shù)據(jù) .局部變量 臨時(shí)變量, 字節(jié)集, , , 臨時(shí)存放變量 .局部變量 密碼疊加量, 整數(shù)型, , , 密碼疊加變量 .局部變量 隨機(jī)數(shù), 整數(shù)型, , , 隨機(jī)變量 .局部變量 隨機(jī)變量集, 字節(jié)集, , , 隨機(jī)變量字節(jié)集 .局部變量 單個(gè)對(duì)換位置, 整數(shù)型, , , 存放單個(gè)對(duì)換位置 ' 限制只加密大于大于或等于10字節(jié)以上長(zhǎng)度的文件,密碼可以和文件一樣長(zhǎng),如果比文件長(zhǎng),那多出部分只能累加到密碼疊加量里,不能在數(shù)據(jù)集加密中進(jìn)行混合 ' 小于10字節(jié)的文件可自行調(diào)整參數(shù)和算法 .如果真 (方式 = 1 且 取字節(jié)集長(zhǎng)度 (數(shù)據(jù)集) ≥ 10 且 取字節(jié)集長(zhǎng)度 (密碼集) ≥ 1) ' >>>>>>>>>>>>>加密開始 ' ----------------------------------(1)計(jì)算密碼疊加量 j = 取字節(jié)集長(zhǎng)度 (密碼集) .計(jì)次循環(huán)首 (j, i) 密碼疊加量 = 密碼集 [i] + 密碼疊加量 + i × 15 .計(jì)次循環(huán)尾 () lk = 密碼疊加量 ' ---用于計(jì)算對(duì)換位置時(shí)使用 ' ----------------------------------(2)引入固定8位數(shù)隨機(jī)變量 置隨機(jī)數(shù)種子 () 隨機(jī)數(shù) = 取隨機(jī)數(shù) (10000000, 98999999) ' ----------------------------------(3)開始數(shù)據(jù)集加密 j = 取字節(jié)集長(zhǎng)度 (密碼集) .計(jì)次循環(huán)首 (取字節(jié)集長(zhǎng)度 (數(shù)據(jù)集), i) ' ------開始加密數(shù)據(jù) 數(shù)據(jù)集 [i] = 數(shù)據(jù)集 [i] + 密碼集 [j] + 密碼疊加量 + 隨機(jī)數(shù) j = j - 1 .如果真 (j = 0) j = 取字節(jié)集長(zhǎng)度 (密碼集) .如果真結(jié)束 .計(jì)次循環(huán)尾 () ' ----------------------------------(4)開始把隨機(jī)數(shù)轉(zhuǎn)換隨機(jī)變量集加密,再合并到數(shù)據(jù)集中 隨機(jī)數(shù) = 隨機(jī)數(shù) + 密碼疊加量 ' ------第一次簡(jiǎn)單混合加密 隨機(jī)變量集 = 到字節(jié)集 (到文本 (隨機(jī)數(shù))) j = 取字節(jié)集長(zhǎng)度 (密碼集) .計(jì)次循環(huán)首 (取字節(jié)集長(zhǎng)度 (隨機(jī)變量集), i) ' ------開始第二次加密隨機(jī)變量集 隨機(jī)變量集 [i] = 隨機(jī)變量集 [i] + 密碼集 [j] + 密碼疊加量 j = j - 1 .如果真 (j = 0) j = 取字節(jié)集長(zhǎng)度 (密碼集) .如果真結(jié)束 .計(jì)次循環(huán)尾 () 數(shù)據(jù)集 = 數(shù)據(jù)集 + 隨機(jī)變量集 ' ------數(shù)據(jù)集和隨機(jī)變量集合并 ' ----------------------------------(5)通過(guò)對(duì)數(shù)據(jù)集長(zhǎng)度和密碼疊加變量的比例算法求出對(duì)換位置 t = 取字節(jié)集長(zhǎng)度 (數(shù)據(jù)集) .計(jì)次循環(huán)首 (8, i) ' ------先通過(guò)和密碼疊加變量計(jì)算出對(duì)應(yīng)位置 加入成員 (對(duì)換位置組, t × lk ÷ (lk + t)) t = t - 1.69 lk = lk × 0.459 .計(jì)次循環(huán)尾 () ' ----------------------------------(6)開始對(duì)換隨機(jī)變量集在數(shù)據(jù)集里的位置 k = 取字節(jié)集長(zhǎng)度 (數(shù)據(jù)集) 臨時(shí)變量 = 取空白字節(jié)集 (1) .計(jì)次循環(huán)首 (8, i) ' ------ 開始對(duì)換 單個(gè)對(duì)換位置 = 對(duì)換位置組 [i] 臨時(shí)變量 [1] = 數(shù)據(jù)集 [單個(gè)對(duì)換位置] 數(shù)據(jù)集 [單個(gè)對(duì)換位置] = 數(shù)據(jù)集 [k] 數(shù)據(jù)集 [k] = 臨時(shí)變量 [1] k = k - 1 .計(jì)次循環(huán)尾 () 返回 (1) .如果真結(jié)束 .如果真 (方式 = 0 且 取字節(jié)集長(zhǎng)度 (數(shù)據(jù)集) ≥ 10 且 取字節(jié)集長(zhǎng)度 (密碼集) ≥ 1) ' --------------------解密 ' ----------------------------------(1)計(jì)算密碼疊加量,和加密部分(1)一樣 j = 取字節(jié)集長(zhǎng)度 (密碼集) .計(jì)次循環(huán)首 (j, i) 密碼疊加量 = 密碼集 [i] + 密碼疊加量 + i × 15 .計(jì)次循環(huán)尾 () lk = 密碼疊加量 ' ---用于計(jì)算對(duì)換位置時(shí)使用 ' ----------------------------------(2)通過(guò)對(duì)數(shù)據(jù)集長(zhǎng)度和密碼疊加變量的比例算法求出對(duì)換位置,和加密碼部分(5)一樣 t = 取字節(jié)集長(zhǎng)度 (數(shù)據(jù)集) .計(jì)次循環(huán)首 (8, i) 加入成員 (對(duì)換位置組, t × lk ÷ (lk + t)) t = t - 1.69 lk = lk × 0.459 .計(jì)次循環(huán)尾 () ' ----------------------------------(3)開始對(duì)換隨機(jī)變量集在數(shù)據(jù)集里的位置,并把數(shù)據(jù)集和隨機(jī)變量集切分出來(lái),對(duì)換位置和加密部分(6)略有不同 k = 取字節(jié)集長(zhǎng)度 (數(shù)據(jù)集) - 7 ' ------ 開始反向?qū)Q 臨時(shí)變量 = 取空白字節(jié)集 (1) .計(jì)次循環(huán)首 (8, i) 單個(gè)對(duì)換位置 = 對(duì)換位置組 [9 - i] ' ------ 開始反向?qū)Q 臨時(shí)變量 [1] = 數(shù)據(jù)集 [單個(gè)對(duì)換位置] 數(shù)據(jù)集 [單個(gè)對(duì)換位置] = 數(shù)據(jù)集 [k] 數(shù)據(jù)集 [k] = 臨時(shí)變量 [1] k = k + 1 .計(jì)次循環(huán)尾 () k = 取字節(jié)集長(zhǎng)度 (數(shù)據(jù)集) 隨機(jī)變量集 = 取字節(jié)集右邊 (數(shù)據(jù)集, 8) ' ------ 分割出隨機(jī)變量集 數(shù)據(jù)集 = 取字節(jié)集中間 (數(shù)據(jù)集, 1, k - 8) ' ------ 分割出數(shù)據(jù)集 ' ----------------------------------(4)開始解密出隨機(jī)數(shù),和加密部分(4)取反向操作 j = 取字節(jié)集長(zhǎng)度 (密碼集) .計(jì)次循環(huán)首 (取字節(jié)集長(zhǎng)度 (隨機(jī)變量集), i) 隨機(jī)變量集 [i] = 隨機(jī)變量集 [i] - 密碼集 [j] - 密碼疊加量 j = j - 1 .如果真 (j = 0) j = 取字節(jié)集長(zhǎng)度 (密碼集) .如果真結(jié)束 .計(jì)次循環(huán)尾 () 隨機(jī)數(shù) = 到數(shù)值 (到文本 (隨機(jī)變量集)) 隨機(jī)數(shù) = 隨機(jī)數(shù) - 密碼疊加量 ' ----------------------------------(5)開始解密數(shù)據(jù)集,和加密部分(3)取反向操作 j = 取字節(jié)集長(zhǎng)度 (密碼集) .計(jì)次循環(huán)首 (取字節(jié)集長(zhǎng)度 (數(shù)據(jù)集), i) 數(shù)據(jù)集 [i] = 數(shù)據(jù)集 [i] - 密碼集 [j] - 密碼疊加量 - 隨機(jī)數(shù) j = j - 1 .如果真 (j = 0) j = 取字節(jié)集長(zhǎng)度 (密碼集) .如果真結(jié)束 .計(jì)次循環(huán)尾 () 返回 (0) .如果真結(jié)束 返回 (10) .子程序 _打開文件加密_被單擊 .局部變量 file1, 整數(shù)型, , , 要加密的文件號(hào) .局部變量 file2, 整數(shù)型, , , 加密后新建的文件號(hào) .局部變量 code, 字節(jié)集, , , 要加密碼的密碼 .局部變量 exc, 文本型, , "0", 取文件名格式用 .局部變量 文件長(zhǎng)度, 長(zhǎng)整數(shù)型, , , 要加密的文件大小 .局部變量 循環(huán)次數(shù), 整數(shù)型, , , 加密循環(huán)次數(shù) .局部變量 FSO, 對(duì)象, , , 用于讀取文件屬性信息 .局部變量 GetFile, 對(duì)象, , , 用于讀取文件屬性信息 .局部變量 temp, 字節(jié)集, , , 臨時(shí)存放字節(jié)集 .局部變量 i, 整數(shù)型, , , 提示加密進(jìn)度用 ' 加密時(shí)是以80萬(wàn)計(jì)/次讀入數(shù)據(jù)的,每次循環(huán)加密后的文件都會(huì)多出8字節(jié)的隨機(jī)密匙,所以解密時(shí)要以80.008萬(wàn)/次讀入數(shù)據(jù)。 code = 到字節(jié)集 (密碼編輯框.內(nèi)容) .如果真 (通用對(duì)話框1.打開 ()) file1 = 打開文件 (通用對(duì)話框1.文件名, #讀寫, ) FSO.創(chuàng)建 (“Scripting.FileSystemObject”, ) GetFile = FSO.對(duì)象型方法 (“GetFile”, 通用對(duì)話框1.文件名) 文件長(zhǎng)度 = GetFile.讀數(shù)值屬性 (“Size”, ) exc = 分割文本 (通用對(duì)話框1.文件名, “\”, ) file2 = 打開文件 (取當(dāng)前目錄 () + “\CNA+” + exc [取數(shù)組成員數(shù) (exc)], #改寫, ) 狀態(tài)條1.置文本 (0, “狀態(tài):正在加密..”) 狀態(tài)條1.置文本 (1, “文件:” + 到文本 (exc [取數(shù)組成員數(shù) (exc)])) 循環(huán)次數(shù) = 到整數(shù) (文件長(zhǎng)度 \ 800000) + 1 .計(jì)次循環(huán)首 (循環(huán)次數(shù), i) temp = 讀入字節(jié)集 (file1, 800000) CNA數(shù)據(jù) (temp, code, 1) 寫出字節(jié)集 (file2, temp) 狀態(tài)條1.置文本 (2, “進(jìn)度:” + 到文本 (取整 (i ÷ 循環(huán)次數(shù) × 100)) + “%”) ' -----進(jìn)度顯示以百分比方式顯現(xiàn) .計(jì)次循環(huán)尾 () 狀態(tài)條1.置文本 (0, “狀態(tài):加密完成”) 關(guān)閉文件 (file2) 關(guān)閉文件 (file1) .如果真結(jié)束 .子程序 _打開文件解密_被單擊 .局部變量 file1, 整數(shù)型, , , 要加密的文件號(hào) .局部變量 file2, 整數(shù)型, , , 加密后新建的文件號(hào) .局部變量 code, 字節(jié)集, , , 要加密碼的密碼 .局部變量 exc, 文本型, , "0", 取文件名格式用 .局部變量 文件長(zhǎng)度, 長(zhǎng)整數(shù)型, , , 要加密的文件大小 .局部變量 循環(huán)次數(shù), 整數(shù)型, , , 解密循環(huán)次數(shù) .局部變量 FSO, 對(duì)象, , , 用于讀取文件屬性信息 .局部變量 GetFile, 對(duì)象, , , 用于讀取文件屬性信息 .局部變量 temp, 字節(jié)集, , , 臨時(shí)存放字節(jié)集 .局部變量 i, 整數(shù)型, , , 提示加密進(jìn)度用 ' 注意: 加密時(shí)是以80萬(wàn)計(jì)/次讀入數(shù)據(jù)的,每次循環(huán)加密后的文件都會(huì)多出8字節(jié)的隨機(jī)密匙,所以解密時(shí)要以80.008萬(wàn)/次讀入數(shù)據(jù)。 code = 到字節(jié)集 (密碼編輯框.內(nèi)容) .如果真 (通用對(duì)話框1.打開 ()) file1 = 打開文件 (通用對(duì)話框1.文件名, #讀寫, ) FSO.創(chuàng)建 (“Scripting.FileSystemObject”, ) GetFile = FSO.對(duì)象型方法 (“GetFile”, 通用對(duì)話框1.文件名) 文件長(zhǎng)度 = GetFile.讀數(shù)值屬性 (“Size”, ) exc = 分割文本 (通用對(duì)話框1.文件名, “\”, ) file2 = 打開文件 (取當(dāng)前目錄 () + “\CNA-” + exc [取數(shù)組成員數(shù) (exc)], #改寫, ) 狀態(tài)條1.置文本 (0, “狀態(tài):正在解密..”) 狀態(tài)條1.置文本 (1, “文件:” + 到文本 (exc [取數(shù)組成員數(shù) (exc)])) 循環(huán)次數(shù) = 到整數(shù) (文件長(zhǎng)度 \ 800008) + 1 ' 注意要多出8字節(jié) .計(jì)次循環(huán)首 (循環(huán)次數(shù), i) temp = 讀入字節(jié)集 (file1, 800008) ' 看文件大小讀入多少字節(jié),如果文件非常大,則可以通過(guò)移動(dòng)文件指針?lè)绞椒侄芜M(jìn)行加密 CNA數(shù)據(jù) (temp, code, ) 寫出字節(jié)集 (file2, temp) 狀態(tài)條1.置文本 (2, “進(jìn)度:” + 到文本 (取整 (i ÷ 循環(huán)次數(shù) × 100)) + “%”) ' -----進(jìn)度顯示以百分比方式顯現(xiàn) .計(jì)次循環(huán)尾 () 狀態(tài)條1.置文本 (0, “狀態(tài):解密完成”) 關(guān)閉文件 (file1) 關(guān)閉文件 (file2) .如果真結(jié)束
運(yùn)行結(jié)果:
感謝各位的閱讀!關(guān)于“易語(yǔ)言中如何實(shí)現(xiàn)CNA文件加解密數(shù)據(jù)算法”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
網(wǎng)站名稱:易語(yǔ)言中如何實(shí)現(xiàn)CNA文件加解密數(shù)據(jù)算法
轉(zhuǎn)載源于:http://chinadenli.net/article12/gjcsdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、面包屑導(dǎo)航、App設(shè)計(jì)、網(wǎng)站營(yíng)銷、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)