资源简介
本程序是用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
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- 3des加密算法C语言实现
- C++纯文字DOS超小RPG游戏
- DES加密算法C语言实现
- VC++MFC小游戏实例教程(实例)+MFC类库
- C语言实现的DES对称加密算法
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
评论
共有 条评论