天天看點

DES加密基本原理

本文旨在講訴最基本的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加密基本原理

des算法流程圖

3.代碼

github:https://github.com/cantfu/cryptography/tree/master/des

繼續閱讀