本文旨在講訴最基本的DES入門算法原理.
1. 變量及函數的定義
變量/函數名 | 類 型 | 說 明 |
encryption(String plain, String orginKey) | String | DES的字元串加密,plain為明文,orginKey為8位密鑰字元串 |
decryption(String cipher, String orginKey) | String | DES的字元串解密,cipher為密文,originkey為8位密鑰字元串 |
fun(BitSet R, BitSet k) | BitSet | 輪結構的f函數, 32位的資料R,48位的子密鑰k,傳回最後經過P置換的32位輸出 |
createKeys(BitSet orginKey) | Void | 根據64位密鑰生成16輪子密鑰subKeys16[]。orginKey為64bit位的密鑰 |
left_shift(BitSet k, int shift) | BitSet | 密鑰産生過程的C、D的循環左移,shift為左移位數 |
checkLength(String checked) | String | 檢查字元串是否是8的整數倍,傳回由0填充的整數倍字元串 |
stringToBitSet(String str) | BitSet | 字元串str轉為64位的bitset類型,用于加、解密中兩者的轉化 |
BitSetToString(BitSet bt) | String | 傳回Bitset對應的字元串,用于加、解密中兩者的轉化 |
subKeys16 | BitSet[] | 16輪子密鑰 |
count | Int | 補零個數 |
S_BOX | int[][][] | S盒 |
desTxtDecryption(String cipherTxt, String key, String plainTxt) | Void | 對文本文檔cipherTxt進行解密,将結果寫入plainTxt中,plainTxt為明文文本文檔檔案路徑,cipherTxt 密文文檔檔案路徑,key 加密密鑰 |
desTxtEncryption(String plainTxt, String key, String cipherTxt) | Void | 對文本文檔plainTxt進行加密,将結果寫入cipherTxt中,plainTxt為明文文本文檔檔案路徑,cipherTxt 密文文檔檔案路徑,key 加密密鑰 |
2. 算法流程圖
des算法流程圖
3.代碼
github:https://github.com/cantfu/cryptography/tree/master/des