18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于M2加密算法深度解讀

tUM2_ADA ? 來源:djl ? 作者:ADAS ? 2019-08-09 17:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

這個加密類很容易實(shí)現(xiàn)和使用。如果你需要加密字符串,如密碼、汽車牌號等,就可以使用這個個快捷、簡單、安全的方式。只要不暴露加密 KEY, 就會很安全。建議KEY 的長度最少為 12 個包含大小寫的字符。
使用代碼

首先下載源代碼,將其中的類插入你的命名空間。然后你可以初始化類的對象。
加密
以下代碼塊是如何使用 key 變量YourEncryptionKey 加密字符串變量 YourTextString 的簡單例子。

M2encryption.Key = YourEncryptionKey;M2encryption objEncrypt = new M2encryption();objEncrypt.ClearTekst = YourTextString; objEncrypt.Encrypt(); if (objEncrypt.errorState != -2) { MessageBox.Show(objEncrypt.EncryptedTekst);}

在做進(jìn)一步處理前檢查屬性 objEncrypt.errorState 有無錯誤
errorState-1:
這意味著加密的文本包含 ASCII 以外的字符。在加密前,這些字符被更改為 "?"
errorState-2:
沒有提供加密 key。加密過程會中斷。
解密:

M2encryption.Key = YourEncryptionKey;M2encryption objEncrypt = new M2encryption();objEncrypt.EncryptedTekst = YourTextString; objEncrypt.Decrypt(); if (objEncrypt.errorState != -2) { MessageBox.Show(objEncrypt.ClearTekst);}

隨機(jī)化
將屬性 Randomization 設(shè)置為 true,運(yùn)行多次,同一個加密key 和平面文本會產(chǎn)生不同的加密文本

M2encryption.Randomization = true;

快捷模式
設(shè)置為Fastmode 模式會讓加密/解密快捷,但是安全性會降低。如果你要加密小字符串,不應(yīng)該啟用該模式。如果加密很大的文件,可以。
注意,解密和加密的模式應(yīng)該相同。

M2encryption.Fastmode = true;

算法的內(nèi)部工作原理
外部循環(huán)和內(nèi)部循環(huán)
算法包含外部和內(nèi)部循環(huán)。外部循環(huán)迭代次數(shù),內(nèi)部循環(huán)迭代平面文本中每個字符。
自變異內(nèi)部和外部 key
自變異內(nèi)部key
此 key 在內(nèi)部加密流程中使用。key 中每個字母都喲牛股加密平面文本中對應(yīng)的位置。當(dāng) key 的字符串結(jié)束后,該流程會使用自變異的key 版本繼續(xù)進(jìn)行,直至所有平面文本都加密完??磮D1 說明。子變異的內(nèi)部 key 標(biāo)記為藍(lán)色。

基于M2加密算法深度解讀

Fig1. 上述的key永遠(yuǎn)不會重復(fù)
自變異外部 key
用戶輸入key 后,自變異的外部key 會初始化。該key會用于外部循環(huán)并在每次開始自改變。該key的目的是為每輪生成唯一的映射矩陣并在這些輪中初始化自變異內(nèi)部key。映射數(shù)組在內(nèi)部循環(huán)中的加密流程中使用。
6 輪迭代的key 自變化的例子:

基于M2加密算法深度解讀

函數(shù) shuffleArr() 將自變異key作為輸入。根據(jù)key, 它會在 arrayint[] 中得出類似隨機(jī)順序的映射數(shù)字。函數(shù)每次調(diào)用,key 就會自變異,從而創(chuàng)建出新的唯一映射數(shù)組。
函數(shù) shuffleArr():

private void shuffleArr(int state){ int keyStep = 0; byte keyChar; bool emptyFound; int retning = 1; long refIndex = 1; double floatValue; int intPart; double fraPart; mutKey_o = selfMutateKey(mutKey_o, 3, state,1); for (int i = 0; i < 95; i++) map[i] = 0; //nulstil arr for (int i = 1; i < 96; i++) { if (retning == 1) retning = 0; else retning = 1; //h?ndter key if (keyStep > mutKey_o.Length - 1) keyStep = 0; keyChar = (byte)mutKey_o[keyStep]; refIndex = i + (int)keyChar; if (refIndex > 95) { if (refIndex - 95 <= 95) refIndex = refIndex - 95; else { floatValue = refIndex / 95.0; intPart = (int)floatValue; fraPart = floatValue - intPart; if (fraPart == 0.0) fraPart = 1.0; refIndex = Convert.ToInt32(95 * fraPart); } } refIndex--; //pga arr 0- 94 if (map[refIndex] == 0) map[refIndex] = i; else { emptyFound = false; do { if (retning == 1) { refIndex++; if (refIndex > 94) refIndex = 0; if (map[refIndex] == 0) { map[refIndex] = i; emptyFound = true; } } else { refIndex--; if (refIndex < 0) refIndex = 94; if (map[refIndex] == 0) { map[refIndex] = i; emptyFound = true; } } } while (emptyFound == false); } keyStep++; } for (int i = 0; i < 95; i++) { for (int k = 0; k < 95; k++) { if (map[k] == i + 1) { mapRev[i] = (k + 1); break; } } } }

內(nèi)循環(huán)加密流程
Step 1:
整個文本都需要經(jīng)過函數(shù) chainChangeChars() 處理
文本會被從頭到尾來回掃描,文本中每個字母都根據(jù)左邊的相鄰字符(在回來的時候根據(jù)右邊的相鄰字母)更改。如果一個字母更改,每個單獨(dú)的字母也會隨之更改。每個更改的字符會跟映射 arrayint[] 圖重新映射。
這是我解決問題的公式:
示例文本 "ABCD"
A 是 B 的左邊相鄰字母

基于M2加密算法深度解讀


在相反的流程中

基于M2加密算法深度解讀

然后重新映射:
Y = map[X]
最后:
B 被替換為 Y
文本成為 "AYCD" (其中 Y 是個持有真正字母的變量)
原先的 B現(xiàn)在存儲在 Y 內(nèi)??梢酝ㄟ^ Y 和 A 還原
Step 2:
這個步驟是個流程的開始,會根據(jù)自變異的內(nèi)部key 更改文本中每個字母,如圖一所示。
首先生成一個種子。對于每個要更改的字母,下個文本的十進(jìn)位 ascii 值會在 variabelseedC 中累計??吹谝恍写a:

seedC = seedC + (byte)Convert.ToChar(key[keyIndexC]);keyIndexC++; if (keyIndexC > lenKey - 1){ keyIndexC = 0; mutKey_i = selfMutateKey(key,2,1,2);}

Step 3:
生成引用索引號.
步驟 2 中的種子現(xiàn)在用作函數(shù) createRefIndex() 的輸入
在這個函數(shù)中,種子經(jīng)過這個公式:
種子除以 95
將小數(shù)的整數(shù)部分更改為 0
結(jié)果乘以 95
代碼如下:

refIndex = seed; if (refIndex > 95){ if (refIndex - 95 <= 95) refIndex = refIndex - 95; else { floatValue = refIndex / 95.0; intPart = (int)floatValue; fraPart = floatValue - intPart; if (fraPart == 0.0) fraPart = 1.0; refIndex = Convert.ToInt32(95 * fraPart); }}

得到的 refIndex 將總是一個 [1 - 95] 的整數(shù)。
Step 4:
在最后一個步驟中,字符更改為加密文本中的最終字符
字符的索引添加到 therefIndex-1
最后的結(jié)果通過 arrayint[] 圖重新映射

tegnChanged = tegn + (refIndex - 1); if (tegnChanged > 95) tegnChanged = tegnChanged - 95;tegnChanged = map[tegnChanged - 1];

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 安全性
    +關(guān)注

    關(guān)注

    0

    文章

    93

    瀏覽量

    19522
  • 加密算法
    +關(guān)注

    關(guān)注

    0

    文章

    219

    瀏覽量

    26089
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    加密算法的應(yīng)用

    機(jī)。但是,由于加密技術(shù)的保密性,直到二戰(zhàn)結(jié)束后,人們才開始研究加密技術(shù)的理論,進(jìn)一步推動了加密技術(shù)的發(fā)展。 2. 加密算法的含義
    發(fā)表于 10-24 08:03

    汽車遙控加密算法

    本人在公司主要做國內(nèi)整車廠的遙控器,主要是用keeloq,Hitag2 ,Hitag3 ,AES加密算法,想請教下論壇里的大牛,像奧迪,奔馳,寶馬等豪車的遙控器用什么加密算法?
    發(fā)表于 02-17 21:04

    如何去實(shí)現(xiàn)DES加密算法

    DES算法的簡單原理是什么?如何去實(shí)現(xiàn)DES加密算法
    發(fā)表于 04-26 07:14

    uid加密算法

    uid加密算法,1.STM32可以加密程序,不然可能有被竊取的可能JTAG 可以直接通過J-LINK-FLASH獲取代碼,首先新建工程,型號選好,read back即可save data fileUID加密函數(shù),在我的鏈接里,一
    發(fā)表于 07-19 08:23

    DES加密算法是什么

    ,是要被加密或解密的數(shù)據(jù),DES采用16輪運(yùn)算,每輪產(chǎn)生一個輪密鑰參與到運(yùn)算中,密鑰與明文運(yùn)算時采用按位異或的方法(不僅僅是與密鑰異或),但每一位存放的數(shù)據(jù)只有0或1,因此,DES的密鑰空間僅僅只有2^56。2、3DES
    發(fā)表于 07-22 09:13

    對稱加密算法是什么

    對稱加密算法也叫私鑰加密算法,其特征是收信方和發(fā)信方使用相同的密鑰,即加密密鑰和解密密鑰是相同或等價的。非對稱加密算法也叫公鑰加密算法。其特
    發(fā)表于 07-22 07:09

    淺談對稱加密算法與非對稱密鑰加密算法

    什么是對稱密鑰密碼體制?對稱密鑰密碼體制的缺點(diǎn)是什么?非對稱加密算法又是什么?非對稱加密算法的缺點(diǎn)是什么?
    發(fā)表于 12-23 06:05

    采用多種加密算法的文件加密方法

    針對傳統(tǒng)文件加密系統(tǒng)中加密算法單一、加密文件格式簡單、安全性相對較低的問題,本內(nèi)容提出了采用多種加密算法的文件加密方法
    發(fā)表于 05-26 15:35 ?0次下載
    采用多種<b class='flag-5'>加密算法</b>的文件<b class='flag-5'>加密</b>方法

    labview md5加密算法.llb

    md5加密算法 md5加密算法 md5加密算法 md5加密算法
    發(fā)表于 05-25 14:25 ?115次下載

    解讀保護(hù)數(shù)據(jù)安全的八種軟件加密算法

    對稱加密算法是應(yīng)用較早的加密算法,技術(shù)成熟。在對稱加密算法中,數(shù)據(jù)發(fā)信方將明文(原始數(shù)據(jù))和加密密鑰一起經(jīng)過特殊加密算法處理后,使其變成復(fù)雜
    的頭像 發(fā)表于 11-28 10:18 ?1w次閱讀
    <b class='flag-5'>解讀</b>保護(hù)數(shù)據(jù)安全的八種軟件<b class='flag-5'>加密算法</b>

    常見公鑰加密算法有哪些

    RSA、ElGamal、背包算法、Rabin(Rabin的加密法可以說是RSA方法的特例)、Diffie-Hellman (D-H) 密鑰交換協(xié)議中的公鑰加密算法、Elliptic Curve
    發(fā)表于 12-10 09:41 ?4.5w次閱讀

    舉例幾種常見的加密算法

    今天主要總結(jié)下常用的對稱性加密算法DES和AES,非對稱性加密算法RSA。 01 ?DES加密算法 1.DES含義 DES全稱為Data Encrypt
    的頭像 發(fā)表于 04-28 13:52 ?2.1w次閱讀
    舉例幾種常見的<b class='flag-5'>加密算法</b>

    詳細(xì)解讀Go加密解密算法

    本文介紹了常用的加密算法,并對這些加密算法結(jié)合實(shí)際 golang 代碼段進(jìn)行了詳細(xì)解讀。 前言 加密解密在實(shí)際開發(fā)中應(yīng)用比較廣泛,常用加解密分為:“對稱式”、“非對稱式”和”數(shù)字簽名“
    的頭像 發(fā)表于 07-29 17:37 ?3028次閱讀

    Go常用的加密算法詳細(xì)解讀

    【導(dǎo)讀】本文介紹了常用的加密算法,并對這些加密算法結(jié)合實(shí)際 golang 代碼段進(jìn)行了詳細(xì)解讀。 前言 加密解密在實(shí)際開發(fā)中應(yīng)用比較廣泛,常用加解密分為:“對稱式”、“非對稱式”和”數(shù)
    的頭像 發(fā)表于 09-01 14:47 ?3465次閱讀

    加密算法的選擇對于加密安全有多重要?

    加密算法的選擇對于加密安全至關(guān)重要,因?yàn)樗苯佑绊懙綌?shù)據(jù)保護(hù)的有效性和可靠性。以下是幾個關(guān)鍵點(diǎn)來說明加密算法選擇的重要性: 加密強(qiáng)度: 加密算法
    的頭像 發(fā)表于 12-17 15:59 ?695次閱讀