本文所述例項是乙個實現des加密演算法的程式**,在c++中,des加密是比較常用的加密演算法了,且應用非常廣泛。本cpp類檔案可滿足你的des加密需要,**中附帶了豐富的注釋,相信對於大家理解des可以起到很大的幫助。
具體實現**如下:
#include "memory.h"
#include "stdio.h"
enum ;//encrypt:加密,decrypt:解密
void des_run(char out[8],char in[8],bool type=encrypt);
//設定金鑰
void des_setkey(const char key[8]);
static void f_func(bool in[32],const bool ki[48]);//f函式
static void s_func(bool out[32],const bool in[48]);//s盒代替
//變換
static void transform(bool *out, bool *in, const char *table, int len);
static void xor(bool *ina, const bool *inb, int len);//異或
static void rotatel(bool *in, int len, int loop);//迴圈左移
//位元組組轉換成位組
stati程式設計客棧c void bytetobit(bool *out,const char *in, int bits);
//位組轉換成位元組組
static void bittobyte(char *out, const bool *in, int bits);
//置換ip表
const static char ip_table[64]=;
//逆置換ip-1表
const static char ipr_table[64]=;
//e 位選擇表
static const char e_table[48]=;
//p換位表
const static char p_table[32]=;
//pc1選位表
const static char pc1_table[56]=;
//pc2選位表
const static char pc2_table[48]=;
//左移位數表
const static char loop_table[16]=;
//s盒
const static char s_box[8][4][16]=;
static bool subkey[16][48];//16圈子金鑰
void des_run(char out[8],char in[8], bool type)
}else
}transform(m,m,ipr_table,64);
bittobyte(out,m,64);
}void des_setkey(const char key[8])
}void f_func(bool in[32],const bool ki[48])
void s_func(bool out[32],const bool in[48])
}void transform(bool *out,bool *in,const char *table,int len)
void bittobyte(char *out,const bool *in,int bits)
{ memset(out,0,(bits+7)/8);
for(int i=0;i
本文標題: c++實現des加密演算法例項解析
本文位址:
C 實現DES加密 演算法
我的第一篇部落格就是 c語言實現des加密 今天重寫的時候發現好像 傳錯了,有些尷尬,其中有各種奇怪的問題 問題1.好多表,包括s盒之類的寫成char型別了,應該寫int型別才對 問題2.好多變數沒宣告就用了 問題3.為啥我當時要寫這麼多static?問題4.沒標頭檔案,全擠在cpp裡面了 更新修復...
DES加密演算法
命名空間 system.security.cryptography 定義訪問資料加密標準 des 演算法的加密服務提供程式 csp 版本的包裝物件。無法繼承此類。測試1加密頁面 protected void page load object sender,eventargs e response.r...
DES加密演算法
include include include include using namespace std const static char ip table 64 初始置換 const static char ipr table 64 初始逆置換表 static const char extensi...