aes子金鑰生成c語言 AES加密的C語言實現

2021-10-17 04:38:47 字數 2521 閱讀 5670

aes加密的c語言實現,在ubuntu13.10下測試成功。

輸入1.txt加密內容,key金鑰

輸出2.txt密文,3.txt解密後的明文

備註:網上下的,但是這明顯不是乙個ase加密演算法,而是乙個des加密演算法!

後來我又發現,這似乎是乙個ase加密的s盒簡單實現。。。終歸所學不足。

#include "stdio.h"

#include "memory.h"

#include "time.h"

#include "stdlib.h"

#define plain_file_open_error -1 //明文開啟失敗

#define key_file_open_error -2//金鑰檔案開啟失敗

#define cipher_file_open_error -3//暗文開啟失敗

#define ok 1 //加密或者解密成功

typedef char elemtype;

/*初始置換表ip*/

int ip_table[64] = ;

/*逆初始置換表ip^-1*/

int ip_1_table[64] = ;

/*擴充置換表e*/

int e_table[48] = ;

/*置換函式p*/

int p_table[32] = ;

/*s盒*/

int s[8][4][16] =

/*s1*/,,

,},/*s2*/,,

,},/*s3*/,,

,},/*s4*/,,

,},/*s5*/,,

,},/*s6*/,,

,},/*s7*/,,

,},/*s8*/,,

,}};

/*置換選擇1*/

int pc_1[56] = ;

/*置換選擇2*/

int pc_2[48] = ;

/*對左移次數規定*/

int move_times[16] = ;

int bytetobit(elemtype ch,elemtype bit[8]);

int bittobyte(elemtype bit[8],elemtype *ch);

int char8tobit64(elemtype ch[8],elemtype bit[64]);

int bit64tochar8(elemtype bit[64],elemtype ch[8]);

int des_makesubkeys(elemtype key[64],elemtype subkeys[16][48]);

int des_pc1_transform(elemtype key[64], elemtype tempbts[56]);

int des_pc2_transform(elemtype key[56], elemtype tempbts[48]);

int des_rol(elemtype data[56], int time);

int des_ip_transform(elemtype data[64]);

int des_ip_1_transform(elemtype data[64]);

int des_e_transform(elemtype data[48]);

int des_p_transform(elemtype data[32]);

int des_sbox(elemtype data[48]);

int des_xor(elemtype r[48], elemtype l[48],int count);

int des_swap(elemtype left[32],elemtype right[32]);

int des_encryptblock(elemtype plainblock[8], elemtype subkeys[16][48], elemtype cipherblock[8]);

int des_decryptblock(elemtype cipherblock[8], elemtype subkeys[16][48], elemtype plainblock[8]);

int des_encrypt(char *plainfile, char *keystr,char *cipherfile);

int des_decrypt(char *cipherfile, char *keystr,char *plainfile);

/*位元組轉換成二進位制*/

int bytetobit(elemtype ch, elemtype bit[8])else if(isok==cipher_file_open_error)else if(isok==plain_file_open_error)else if(isok==cipher_file_open_error)else if(isok==plain_file_open_error){

printf("明文檔案讀取失敗!\n");

else{

printf("未知錯誤,請重試!\n");

getchar();

return 0;

aes子金鑰生成c語言 AES加密的C語言實現

aes加密的c語言實現,在ubuntu13.10下測試成功。輸入1.txt加密內容,key金鑰 輸出2.txt密文,3.txt解密後的明文 備註 網上下的,但是這明顯不是乙個ase加密演算法,而是乙個des加密演算法!後來我又發現,這似乎是乙個ase加密的s盒簡單實現。終歸所學不足。include ...

aes子金鑰生成c語言 HBase配置AES加密

版本 hdp 3.0.1.0 hbase 2.0.0 為了避免第三方非法訪問我們的重要資料,我們可以給hbase配置加密演算法,目前hbase只支援使用aes加密演算法,用於保護靜態的hfile和wal資料。hbase配置的aes加密是一種端到端的加密模式,其中的加 解密過程對於客戶端來說是完全透明...

AES的C 實現 128位金鑰

寫了乙個aes的c 實現,僅支援128位金鑰,寫得匆忙,不夠規範,僅供參考。aes.h ifndef aes h define aes h include include using namespace std class aes void aes encryptionprocess finalro...