有關3DES DUKPT和MK SK學習記錄

2021-10-19 13:59:13 字數 1925 閱讀 6547

筆記

數字簽名

公鑰,私鑰:任意乙個可以加密,另乙個解密;如傳送方使用公鑰加密,接收方用私鑰解密

檔案簽名:使用軟體把資料壓縮成資訊摘要(不能還原);然後使用私鑰加密成簽名【數字簽名】;再附加再檔案上

解密過程:另一方使用公鑰解密簽名成資訊摘要,可以生產則確定是傳送方傳送;然後把已有的檔案資料雜湊成摘要並比對摘要可以得知是否改動。

數字證書 :機構(ca)發放:ca用私鑰加密被發放者的公鑰和其他資訊作為證書;驗證時使用者用機構的公鑰驗證簽名的證書,可以得到詳細資訊,包括公鑰

對稱加密

概念應用:發信方將明文(原始資料)和加密金鑰一起經演算法處理後變成密文傳送,收信方使用加密用的金鑰及相同演算法解密得到明文。在這個過程只有乙個金鑰。

優缺:演算法公開計算量小加密速度快效率高;使用同樣鑰匙安全性無法保證金鑰管理困難(每次傳送都要新的金鑰)

3des

概念與原理

屬於對稱加密(見前)三重資料加密,可以逆推;唯一金鑰;相比des增加金鑰長度避免暴力破解(192位)。

參考鏈結

實際:加解密過程分別是對明文/密文資料進行三次des加密或解密,得到相應的密文或明文(加密:加解加;解密:解加解->逆向過程)

以加密為例:(若三段金鑰相同則抵消等同於des演算法)

金鑰分成三組在每一次過程中的加密/解密使用。

原理參考des:兩步:初始置換、逆置換。明文輸入塊64位(8個位元組為1乙個資料塊)用金鑰64位變成密文64位。

first:對資料進行分塊和補位(nopadding和zerospadding、pkcs5padding方法

(1)初始置換:對資料按位重新組合,把輸出分為l0、r0(前後)兩部分。置換規則為58位到第1位,50到2;則最後為7;l0是58-8;r0是57-7;

(2)逆置換:進行16輪完全相同的運算(迭代),這些運算被稱為函式f,在每一輪運算過程中資料與相應的金鑰結合。得到l16和r16,以此作為輸入快進行逆置換(初始置換的逆)得到最終密文輸出塊。

tips:迭代過程ln = r(n - 1);rn = l(n - 1)⊕f(rn-1,kn-1):kn是向n層輸入的48位秘鑰

---->函式f由四步運算構成:1.秘鑰置換(kn的生成,n=0~16);2.擴充套件置換;3.s-盒代替;4.p-盒置換。

詳細:1.由64位秘鑰產生16輪的不同48位子秘鑰運用在每一輪的迭代中。(秘鑰有8位奇偶校驗位):把秘鑰降至56,根據選擇置換分成cn和dn兩塊,根據輪數迴圈左移位數(有規則->1或2)生成cn+1和dn+1,二者合併通過選擇置換生成子秘鑰kn(48位).etc。最後一輪左右不交換直接合併在一起。第一輪置換表位pc-1(分成兩塊),之後都是pc-2(生成秘鑰.)

2.把rn從32位變成48位,為了生成與秘鑰相同長度資料進行異或執行,以及提供更長結果便於在替代運算時可以壓縮。擴充套件規則:中間32位,兩邊對稱加

3.rn擴充套件後與子秘鑰kn異或後結果作為s盒輸入,把48位資料變為32。運算有8個s盒,故48位輸入被分為8個6位分組。(過程:六位中首尾取出轉為十進位製作為s盒行剩下4位為列找對應)

4.32位經過p置換,對映後的32位與最初的l異或然後左右部分交換開始下一輪迭代。(函式

注:加密和解密裡,秘鑰使用順序相反,其餘相同(原理一樣)。

補充

1.pin block:

pin按位異或主賬號(一共8位元組,12位,pin不足右補f,主帳號取其右12位(不包括最右邊的校驗位),不足12位左補「0x00」。)

2.**金鑰體系: 

職責:1->主金鑰用於加密金鑰交換金鑰和資料金鑰作本地儲存;

2->金鑰交換金鑰用於加密資料金鑰作網路傳輸;

3->資料金鑰用於對資料進行加解密。

一些概念:

lmk:本地主金鑰 zmk:區域主金鑰 tmk:終端主金鑰

zak:區域認證金鑰 zpk:區域pin金鑰

tak:終端認證金鑰 tpk:終端pin金鑰

和孩子一起學python(3)

這幾天小m進展不大,和她一起用turtle畫了張圖,說實話,turtle的函式太少了,如果要按照預定的想法畫圖還是很不容易,我和她一起畫60等分重疊圓,為了找圓起始點位置,費了我的一些時間和她的一些熱情。她後來按我的建議轉向遊戲,例如打扮遊戲,一樣的她有很多想法,要實現這些想法需要耐心和技能,初期很...

初學C語言之近日小結3 有關求素數和

近三天主要學習了函式和陣列的相關知識,對於函式還處於定義階段,陣列可以初步運用,之前所學的迴圈也在練習階段。下面進入正文 求素數和的 這次的題目還是由翁愷老師所出的題目 素數和 10分 題目內容 我們認為2是第乙個素數,3是第二個素數,5是第三個素數,依次類推。現在,給定兩個整數n和m,0 incl...

python2和python3到底應該學哪個好?

許多剛入門 python 的朋友都在糾結的的問題是 我應該選擇學習 python2 還是 python3,python 3.7 已經發布了,目前python的使用者,主要使用的版本 應該是 python3.6 和 python2.7 那麼是不是該轉到 python 3.7 呢?首先先說一下pytho...