?? des.h
字號:
// DES.h : main header file for the SXT_DES application
//
#if !defined(AFX_DES_H__5D9C0C13_F444_436F_A9FC_D028568B7DB0__INCLUDED_)
#define AFX_DES_H__5D9C0C13_F444_436F_A9FC_D028568B7DB0__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
#include "resource.h" // main symbols
/////////////////////////////////////////////////////////////////////////////
// CDESApp:
// See DES.cpp for the implementation of this class
//
#define maxlen 6000
#include<iostream.h>
#include"string.h"
#include"malloc.h"
#include"stdio.h"
struct bits{
bool bit[64]; //為什么要設置成bool型
int totalbit;
};
struct chars{
char ch[8];
int totalchar;
};
struct bitarray{
bits bitarr[16];
};
class DESF
{
public:
float bitdiff(char mfile[],char cfile[],float * bitdiff8byte);
//功能:顯示讀入的文件
//參數:讀入文件
//結果:將讀入的文件顯示在屏幕上
//--------------------------------------------------------------
//--------------------------------------------------------------
dispfile(char fn[]);
//功能:顯示讀入的文件
//參數:讀入文件
//結果:將讀入的文件顯示在屏幕上
//--------------------------------------------------------------
//--------------------------------------------------------------
desDecode(char mfile[],char key[],char cfile[]);
//功能:解密
//參數:輸入的密文,密鑰,輸出明文
//結果:函數改變第三個參數內容
//--------------------------------------------------------------
//--------------------------------------------------------------
desEncode(char mfile[],char key[],char cfile[]);
//功能:加密
//參數:輸入的明文,密鑰,輸出密文
//結果:函數改變第三個參數內容
//--------------------------------------------------------------
//--------------------------------------------------------------
desCoding(char mfile[],char key[],char cfile[],bool codedir);
//功能:將文件中字符串分成每8字節一組,進行加密(解密)
//參數:輸入的明文(密文),密鑰,輸的密文(明文),加密(解密)控制字
//結果:函數改變第三個參數內容
//--------------------------------------------------------------
//--------------------------------------------------------------
desblock(chars intext8,chars key,bool encode,chars * outtext8);
//功能:DES加密(解密)模塊,加密(解密)8位字符串
//參數:明文(密文),密鑰,加密(解密)控制字,密文(明文)
//結果:函數改變第四個參數內容
//--------------------------------------------------------------
//--------------------------------------------------------------
exclusiveOR(bits bts1,bits bts2,bits * xorRes);
//功能:將擴展后的右邊與密鑰相異或
//參數:擴展后的右邊48位,密鑰48位,異或后存放位置
//結果:函數改變第三個參數內容
//--------------------------------------------------------------
//--------------------------------------------------------------
ftran(bits inbts32,bits keyi,bits * fRes);
//功能:DES中的F函數
//參數:右邊32位,key序號(0-15),變換后存放位置
//結果:函數改變第二個參數內容
//--------------------------------------------------------------
//--------------------------------------------------------------
ptran(bits bts32,bits * fout);
//功能:P變換,
//參數:待變換數組,處理后結果存放數組
//結果:函數改變第二個參數內容
//--------------------------------------------------------------
//--------------------------------------------------------------
sboxtran(bits bts48,bits * bts32);
//功能:S-BOX , 數據壓縮
//參數:進入S盒的48位bool串,輸出S盒的32位bool串
//結果:函數改變第二個參數內容
//--------------------------------------------------------------
//--------------------------------------------------------------
bitToSBoxPos(bits bts48,int boxno,int * row,int * col);
//功能:將進入S盒的48位分成8個6位,算出行列
//參數:進入S盒的48位,第幾個S盒,S盒的行,S盒的列
//結果:函數改變第三、四個參數內容
//--------------------------------------------------------------
//--------------------------------------------------------------
etran(bits bts32,bits * bts48);
//功能:將右32位進行擴展位48位
//參數:原32位存放結構體bits的變量中,擴展后結果存放結構體bits的變量的指針
//結果:函數改變第二個參數內容
//--------------------------------------------------------------
//--------------------------------------------------------------
keygen(bits key,bitarray * subkey);
//功能:生成子密鑰
//參數:經過PC1變換的56位二進制字符串
//結果:將保存于char SubKeys[16][48]
//--------------------------------------------------------------
//--------------------------------------------------------------
pc2tran(bits Cbts28,bits Dbts28,bits * Kbts48);
//功能:將密鑰左右兩半合并,并進行pc2變換
//參數:變換前密鑰的左半邊,變換前密鑰的有右半邊,pc2變換后存放位置
//結果:函數改變第三個參數內容
//--------------------------------------------------------------
//--------------------------------------------------------------
pc1tran(bits bts64,bits * Cbts28,bits * Dbts28);
//功能:將密鑰進行pc1變換,并且分成左右兩邊
//參數:需要變換的64位密鑰,pc1變換后的左半邊,pc1變換后的有半邊
//結果:函數改變第二、三個參數內容
//--------------------------------------------------------------
//--------------------------------------------------------------
leftshift(bits * bit28,int times);
//功能:密鑰每輪移位
//參數:需要移位的28位密鑰,所要移的位數
//結果:函數改變第一個參數內容
//--------------------------------------------------------------
//--------------------------------------------------------------
FinalIP(bits Lbts32,bits Rbts32,bits * bts64);
//功能:IP逆變換
//參數:變換前左半邊,變換前右半邊,變換后字符串,
//結果:函數改變第三個參數的內容
//--------------------------------------------------------------
//--------------------------------------------------------------
InitIP(bits bts64,bits * Lbts32,bits * Rbts32);
//功能:IP變換
//參數:待變換字符串,變換后左半邊,變換后右半邊
//結果:函數改變第二、三個參數的內容
//--------------------------------------------------------------
//--------------------------------------------------------------
bitmaping(int bitmapno,bits inbts,bits * outbts);
//功能:查表置換1.ip 2.fp 3.e 4.p 5.pc1 6.pc2
//參數:選擇哪個置換,需要置換的數組,置換后存放位置
//結果:改變第三個參數內容
//--------------------------------------------------------------
//--------------------------------------------------------------
bitstochar(bits bts,chars * ch);
//功能:二進制串到字符串的變換,
//參數:二進制串,字符串
//結果:改變第二個參數內容
//--------------------------------------------------------------
//--------------------------------------------------------------
chartobits(chars ch,bits * bts);
//功能:字符串到二進制串的變換,
//參數:字符串,二進制串
//結果:改變第二個參數內容
//--------------------------------------------------------------
//--------------------------------------------------------------
DESF();
virtual ~DESF();
};
#endif // !defined(AFX_DESF_H__F8BFD6BB_E88D_463A_A990_B04EDF70A77E__INCLUDED_)
class CDESApp : public CWinApp
{
public:
CDESApp();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDESApp)
public:
virtual BOOL InitInstance();
//}}AFX_VIRTUAL
// Implementation
//{{AFX_MSG(CDESApp)
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -