资源简介
本程序是用C++封装成的DES加解密应用程序,配合VC界面的整套源码。
代码片段和文件信息
#include “stdafx.h“
#include “des.h“
#include “table.h“
#include
void des::IP( Data64 &word )
{
ROR( word.a 4 );
ROR( word.b 3 );
ROR( word.c 2 );
ROR( word.d 1 );
ROL( word.e 1 );
ROL( word.f 2 );
ROL( word.g 3 );
ROL( word.h 4 );
}
void des::IP_1( Data64 &word )
{
ROR( word.h 4 );
ROR( word.g 3 );
ROR( word.f 2 );
ROR( word.e 1 );
ROL( word.d 1 );
ROL( word.c 2 );
ROL( word.b 3 );
ROL( word.a 4 );
}
void des::extend_R( Data32 &R Data48 &E_R )
{
E_R.a = R.d;
E_R.b = R.d;
E_R.c = R.c;
E_R.d = R.b;
E_R.e = R.a;
E_R.f = R.a;
}
void des::switch_key_lib( Data64 &k_lib )
{
unsigned char i;
unsigned char *p*p_cpy;
unsigned char temp;
unsigned char mn;
unsigned char cd;
Data64 k_lib_cpy;
k_lib.a = ( k_lib.b << 7 ) + ( k_lib.a & 0x7F );//去掉奇偶位
k_lib.b = ( k_lib.c << 6 ) + ( ( k_lib.b >> 1 ) & 0x3F );
k_lib.c = ( k_lib.d << 5 ) + ( ( k_lib.c >> 2 ) & 0x1F );
k_lib.d = ( k_lib.e << 4 ) + ( ( k_lib.d >> 3 ) & 0x0F );
k_lib.e = ( k_lib.f << 3 ) + ( ( k_lib.e >> 4 ) & 0x07 );
k_lib.f = ( k_lib.g << 2 ) + ( ( k_lib.f >> 5 ) & 0x03 );
k_lib.g = ( k_lib.h << 1 ) + ( ( k_lib.g >> 6 ) & 0x01 );
k_lib.h = 0;
k_lib_cpy = k_lib;
p = ( unsigned char * )&k_lib;
p_cpy = ( unsigned char * )&k_lib_cpy;
for( i = 0; i < 56; i++ )
{
m = position_table[ switch_k_table[ i ] - 1 ][ 0 ];//获得要换位所在的字符串的号码
n = position_table[ switch_k_table[ i ] - 1 ][ 1 ];//获得要换位所在字符串中的位置
c = position_table[ i ][ 0 ];
d = position_table[ i ][ 1 ];
temp = p_cpy[ m ] & and_table_get[ n ];//获得要换位的二进制位
if( n > d )
{
p[ c ] = ( p[ c ] & and_table_out[ d ] ) + ( temp >> ( n - d ) );//将要换位移到被换位所对应的位置
}
else
{
p[ c ] = ( p[ c ] & and_table_out[ d ] ) + ( temp << ( d - n ) );
}
}
}
void des::rotate_key_lib( Data64 &k_lib char i )
{
unsigned char temp1temp2;
temp1 = k_lib.c >> ( 8 - i );
k_lib.c = ( k_lib.c << i ) + ( k_lib.b >> ( 8 - i ) );
k_lib.b = ( k_lib.b << i ) + ( k_lib.a >> ( 8 - i ) );
k_lib.a = ( k_lib.a << i ) + ( ( k_lib.d >> ( 4 - i ) ) & and_rotate_inside[ 0 ][ i - 1 ] );
temp2 = k_lib.e << ( 8 - i );
k_lib.e = ( k_lib.e >> i ) + ( k_lib.f << ( 8 - i ) );
k_lib.f = ( k_lib.f >> i ) + ( k_lib.g << ( 8 - i ) );
k_lib.g = ( k_lib.g >> i ) + ( ( k_lib.d << ( 4 - i ) ) & and_rotate_inside[ 1 ][ i - 1 ] );
k_lib.d = temp2 + ( ( k_lib.d >> i ) & and_rotate_inside[ 1 ][ i + 1 ] ) + ( ( k_lib.d << i ) & and_rotate_inside[ 0 ][ i + 1 ] ) + temp1;
}
void des::get_key_from_lib( Data48 &key Data64 &k_lib )//key为所求值,k_lib为未知值
{
/*key.a = k_lib.b;
key.b = k_lib.c;
key.c = k_lib.d;
key.d = k_lib.e;
key.e = k_lib.f;
key.f = k_lib.g;*/
char i;
unsigned char temp;
unsigned char mnab;
unsigned char *p_key*p_lib;
memset( &key 0 6 );//先将key清零
p_key = ( unsigned char * )&key;
p_lib = ( unsigned char * )&k_lib;
for( i = 0; i < 48; i++ )//按照密码选
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 11044 2009-03-09 14:27 EncryptDlg.cpp
文件 1889 2009-03-02 10:49 EncryptDlg.h
文件 3597 2009-02-27 08:45 ReadMe.txt
文件 1560 2009-02-28 09:57 resource.h
文件 209 2009-02-27 08:45 StdAfx.cpp
文件 1054 2009-02-27 08:45 StdAfx.h
文件 4400 2009-02-21 15:54 table.h
文件 1078 2009-02-27 08:45 res\Encrypt.ico
文件 399 2009-02-27 08:45 res\Encrypt.rc2
文件 437 2009-02-21 15:02 data.h
文件 7209 2009-03-02 10:32 des.cpp
文件 650 2009-02-28 12:04 des.h
文件 7068 2009-03-02 10:44 des_1.cpp
文件 630 2009-02-28 09:32 des_1.h
文件 21380 2009-03-09 14:11 Encrypt.aps
文件 1649 2009-08-24 10:38 Encrypt.clw
文件 2077 2009-02-27 08:45 Encrypt.cpp
文件 3342 2009-08-24 10:39 Encrypt.dsp
文件 537 2009-02-27 08:45 Encrypt.dsw
文件 1335 2009-02-27 08:45 Encrypt.h
文件 123904 2009-08-24 10:39 Encrypt.ncb
文件 50688 2009-08-24 10:39 Encrypt.opt
文件 1888 2009-08-24 10:39 Encrypt.plg
文件 5769 2009-03-02 10:49 Encrypt.rc
目录 0 2009-03-02 16:30 res
----------- --------- ---------- ----- ----
253793 25
相关资源
- C++ 网络聊天室设计报告及主要源程序
- 空间后方交会C++
- 层次聚类算法C++
- BOOTH算法C++实现
- VS2010 C++窗口应用程序窗口之间传递参
- C++项目-图书管理系统
- 马石安编写的VC++程序设计与应用程序
- mfc获取mac地址的小程序
- 基于定步长四阶龙格库塔法的C++弹道
- 电梯仿真.zip
- Vigenere密码实现控制台对文件加解密的
- 循环赛日程表,分治法n=2K,n为任意数
- GPS单点定位完整代码txt版C++,还有r
- 迷宫的生成与自动寻路
- libstdc++.so.6.0.22
- 基于原始套接字实现的PING功能代码
- 流式套接字定长变长接收回射实验报
- C++简易聊天程序C++简易聊天程序
- AES 加解密c++
- 自己用C++实现的RC4算法
- C++实现的BP神经网络算法实现奇偶检验
- Linux环境下的文件安全传输(C/C++)
- SHA-1算法实现源代码
- 本例程采用VC++ 实现JPG格式图片的打开
- c++高仿QQ截图
- 银行家算法模拟实现C++版
- 道格拉斯压缩算法C++实现
- Visual C++开发GIS系统第2版书中代码
- 航空订票管理系统 机场订票管理系统
- moravec算子c++代码
评论
共有 条评论