在VC++实现数据加密

vc++实现文件加解密功能 (附完整源码) 阅读详情
 

下载本文示例源代码

为了保证数据的安全性与完整性,常常要对数据进行加密,在数据传输过程进行数据加密可以防止中途非法截获。我们通常称原始数据叫做源文,用约定的加密算法进行加密处理。加密算法的输入是源文与加密键,而输出的则是密文。加密算法可以分为两种,一种是密键加密算法,一种是明键加密法。



一、密键加密法:
  加密算法可以公开,但加密键一定要保密。密文对不知道加密键的人来说,是不容易解密的。如下述算法:
A.把源文分成等长的块,每块的长度和加密键的长度相等,对长度不够的块用空格补充;
B.用自己定义的整数代替源文的数据;
C.对加密键也进行数据替换操作;
D.对源文的整数码与加密键相应字符的整数码进行相加,然后对某一整数进行取模操作;
E.将整数码再用相应的字符进行替换,这样就得到了密文。
实现代码如下:

CString CEncryptDlg::Encrypt_KnownKey(CString Source)
{
	int r=ENCRYPT_P*ENCRYPT_Q;
	int e=101;  
	//设置加密键,一般比P与Q大的质数就可以选作加密键
	int k=(ENCRYPT_P-1)*(ENCRYPT_Q-1);
	int d=5;
	//求得解密键,即满足公式:(d*11) mod k=1

	char pSource[255];
	char pTarget[255];
	int iLen;
	int i;
	DWORD dw1;

	wsprintf(pSource,"%s",m_Source);
	iLen=m_Source.GetLength();
	for (i=0;i<iLen;i++)
	{
		div_t div_Result;
		dw1=Exp(pSource[i],e,r);
		div_Result=div(dw1,r);
		pTarget[i]=div_Result.rem;
		//获取密文
	}
	pTarget[iLen]=''\0'';

	CString strTarget;
	strTarget.Format("%s",pTarget);
	return(strTarget);
}
 注:对D步的数据处理,每人也可以根据自己的具体情况用别的计算方法替换。

二、明键加密算法
  明键加密算法可以随意使用加密算法与加密键,但是解密键是保密的。所在,它同时需要两个键,一个用于加密,一个用于解密。而解密键不能从加密键推出的。从而,每个人都可以对源文进行加密操作,但是在没有授权进行解密时,他是不能完成解密工作的,因为他不知道解密键。具体算法如下所述:
A.任意选择两个质数p与q,它们取值最好在100位左右。同时计算r=p*q;
B.任意选择一个整数e,e是与(p-1)*(q-1)互为质数的,e就是算法中的加密键;
C.求解方程式:(d*e) mod ((p-1)*(q-1))=1,d即是加密算法中的解密键;
D.对源文p进行加密即可得到密文,计算公式为c=pe mod r;c即为密文;
E.对密文c进行解密即可得到源文,计算公式为p=cd mod r;p即为源文;

解密算法如下:

CString CEncryptDlg::Decode_KnownKey(CString Source)
{
	int r=ENCRYPT_P*ENCRYPT_Q;
	int e=101;  
	//设置加密键,一般比P与Q大的质数就可以选作加密键
	int k=(ENCRYPT_P-1)*(ENCRYPT_Q-1);//k=168
	int d=5;
	//求得解密键,即满足公式:(d*29) mod k=1

	int iLen=m_Source.GetLength();
	char pSource[255],pTarget[255];
	wsprintf(pSource,"%s",m_Source);
	for (int i=0;i<iLen;i++) 
	{
		DWORD dw1;
		dw1=Exp(pSource[i],d,r);
		div_t div_Result;
		div_Result=div(dw1,r);
		pTarget[i]=div_Result.rem;
	}
	pTarget[iLen]=''\0'';

	CString strTarget;
	strTarget.Format("%s",pTarget);
	return(strTarget);
}


 

本文仅列出了最基本的算法实现,只是为了抛砖引玉。
程序在Windows XP + VC++ 6.0下调试通过。

基于VC++与OpenSSL的安全通信软件开发实战 随着互联网的广泛应用,数据在传输过程中面临越来越多的安全威胁,安全通信软件成为保障信息机密性、完整性和可用性的关键技术手段。本章将从安全通信的基本概念入手,解析通信安全的三大核心目标:机密性(Confidentiality)、完整性(Integrity)和身份认证(Authentication),并介绍常见的安全威胁模型,如中间人攻击(MITM)、重放攻击和数据篡改等。同时,本章还将概述当前主流的安全通信协议体系,包括SSL/TLS、IPsec、DTLS和MQTT over TLS。 阅读详情

相关推荐

Windows 2000环境下通过VC++获取用户登录信息源代码解析

本文还有配套的精品资源,点击获取 简介:在Windows 2000中,GINA动态链接库是登录过程的核心组件,负责身份验证和登录界面。本文介绍如何在VC++环境下利用GINA DLL获取用户的登录名和密码,并详细说明了创建自定义GINA DLL的步骤,包括项目设置、实现导出函数、获取登录信息、数据加密处理以及DLL文件的编译和替换。特别强调了安全性与兼容性问题,并指出在新版...

weixin_42437253的博客 855

vc++实现文件加密解密

#include "stdafx.h"#include "ecfile.h"#include "ecfileDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////

尹成的技术博客 7230

基于VC++6.0的学生考试系统开发实战(含完整源代码)

在构建智能随机试卷生成系统之前,首要任务是明确组卷过程中所需遵循的各项规则与限制条件,并将其转化为可计算的数学模型。这一步骤决定了最终生成试卷的质量与合理性,直接关系到考试的公平性和有效性。组卷并非简单的随机抽题,而是在多个维度上进行综合权衡的过程,包括题型分布、难度系数、知识点覆盖率、总分一致性等。若缺乏有效的建模手段,极易导致生成的试卷出现偏题、超纲、难易失衡等问题,进而影响教学评估的准确性。为了实现科学组卷,首先需建立一个多维约束体系。这个体系通常包含以下几个核心要素:题型比例。

weixin_42610671的博客 539

VC++使用DES算法进行文件加密和解密

头文件: extern "C" { BOOL xEncrypt(LPCTSTR lpszSource, LPCTSTR lpszDestination, LPCTSTR lpszPassword); BOOL xDecrypt(LPCTSTR lpszSource, LPCTSTR lpszDestination, LPCTSTR lpszPassword); } cpp文件: #inc

hckMe的专栏 9746

VC++环境下DES算法的实现与详解

数据加密标准(DES)是密码学中的一个里程碑,它在1977年被美国国家标准局采纳,成为官方的加密标准。DES的产生是为了解决数据在传输过程中的安全问题,特别是政府、军事和金融等领域的敏感数据。密钥扩展是将64位的初始密钥转换成16个48位的子密钥的过程,这些子密钥将用于DES算法的16轮迭代中。初始密钥包含8个奇偶校验位,它们在密钥扩展过程中会被去除,剩下的56位将用于生成子密钥。以下是密钥扩展算法的简要概述:将初始密钥中的56位分为左右两部分,各28位。

weixin_36064575的博客 1055

VC++ 实现简单的文件加密与解密功能

VC++ 实现简单的文件加密与解密功能 很实用,可以参考参考。

VC++图像加密软件设计与实现

这样如果想得到原文件就必须先破解文件头,而文件头是由RSA加密的,安全性比较高,想破解并不是件容易的事,同时又由于DES加密速度快,适用于大文件的加密,且安全性不高,而RSA加密速度慢,适用于小文件的加密,但安全性很高,两者的结合即满足了速度的要求,又满足了安全性的要求。虽然只用报文摘要也能达到图像认证的目的,这种方法认证的精确度比较高,但是在传输过程中难免会受到噪声等的干扰,故使用报文摘要可能会达不到预期的目的,同时,因为数字水印也有图像认证的功能,因此,本系统采用报文摘要结合易碎水印来实现该目的。

毕业作品网站 1542

C++数据加密解密

37公司要在电话线上传输数据,但担心电话被窃听。所有数据用四位整数传输,他们要求编写一个程序,将数据进行加密,使数据传输更安全。 程序读取四位整数并加密如下: 将每个位换成该位与7的和并用10求模。然后交换第一位与第三位,交换第二位与第四位,并打印加密后的整数。 再编写一个程序读取加密的四位敷,并解密成原先的四位数。

LR通过VC++调用C#中的方法

<br /><br />前提:.net的DLL被包装成COM接口,提供dll文件外,还有tlb文件。<br /> <br /> <br />1、  注册.net的DLL<br />在Regasm所在目录下执行<br />Regasm c:/ Encryptcom.dll /tlb: c:/ Encryptcom.tlb<br />regasm.exe c:/ Encryptcom.dll /tlb /codebase<br /> <br />2、  VC++中用ClassWizaed导入.net的类文件<b

Polarisdu的专栏 565

一个较安全的VC++混合密码系统

内容索引:VC/C++源码,加密解密,加密,解密,RES  一个基本的混合密码系统,使用DES作为对称密钥算法,RSA作为公开密钥算法。   特点如下:   1:提供了俩个加密接口。混合加密,DES加密。   2:本系统的DES可以进行1次DES加密(标准DES加密)和3次DES加密。它会根据密钥长度,自动选择加密方案。当密钥长度在64位以内时它将使用标准DES加密,当密钥长度超过64位后,系统将设置第2密钥,并启用3次DES加密。其密钥长度可达112位,并且它还具有很强的扩展性,提供了3种加解密接口:文件接口,文件句柄接口(可以供其他加密系统使用,本系统的混合加密模块就是使用这个接口),和内

海康威视摄像机SDK二次开发--提取音频保存至文件

由于最近在开发海康威视摄像头,特此记录一下如何提取音频数据,这里主要依靠语音对讲返回的音频数据,通过回调函数写入文件中,加个WAV头即可播放,编码格式可以自己设置在代码中有注释 文件结构 其中CameraInfo内容可以参看海康威视摄像机SDK二次开发–实时预览视频流保存到指定文件中 HIKSDKSaveRealData中的内容 package ClientDemo; import ClientDemo.CameraInfo; import com.sun.jna.NativeLong; import

RichardoMu的博客 3173

mpqs算法C语言,基于des和rsa算法的数据加密传输系统的设计和实现-计算机应用技术专业论文.docx...

基于des和rsa算法的数据加密传输系统的设计和实现-计算机应用技术专业论文羲于DES和枞算法的数据加密传输系统的设计和实珧羲于DES和枞算法的数据加密传输系统的设计和实珧中文摘要基于DES和RSA算法的 数据加密簧输系统的设计和实现 中文摘要网络安全是信息安全中的重要研究内容之一,也是当前信息安全领域中的研 究热点。保护网络系统中的数据不受偶然或恶意原因而遭到破坏、更改、泄露, 是网络安全的主要...

weixin_36422176的博客 411

String+CytoScape构建PPI网络

1.下载CytoScape Cytoscape是一款专业强大好用的物生信息分析软件,主要达用于专业的研究人员使用,软件主要适用于整合模块化网络和生物科学联系网络图的绘制,支持多种文件格式,导入后就可以直接进行编辑或者分析等操作了,除此之外,软件还提供了强大的编辑工具,支持添加相应的注释信息,软件基于java环境组件打造。 下载地址:https://cytoscape.org/ 因为软件基于java...

xiaobai1_1的博客 1万+

vc++网络安全编程范例(17)-open ssl 实现文件加密与解密

OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。   作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。 对称加密算法   OpenSSL一共提供了8种对称

乐在分享 1295

GIS小白也能看懂的实战:5步教你将ArcGIS里的等高线和水系完美导入CAD做规划图

本文详细介绍了如何将ArcGIS中的等高线和水系数据高效导入CAD,制作专业规划底图的5个关键步骤。从数据准备、ArcGIS处理到CAD优化,涵盖坐标系设置、数据裁剪、格式转换等实用技巧,特别适合设计规划领域的新手快速掌握GIS与CAD协同工作流程。

weixin_27966471的博客 426

Notepad++ XML Tools插件:手把手教你格式化混乱XML与一键语法检查(保姆级教程)

本文详细介绍了如何使用Notepad++的XML Tools插件格式化混乱的XML文件并进行一键语法检查。通过插件安装、格式化实战和语法排错的完整流程,帮助开发者高效处理XML数据,提升API通信和数据存储的工作效率。特别适合需要快速验证和整理XML配置的开发人员。

weixin_42619742的博客 325

VC++ & MFC实现的优秀的开源项目

List of Best Open Souce projects written in VC++/MFC    1. 7-Zip (http://sourceforge.net/projects/sevenzip/) :       7-Zip is a file archiver with the high compression ratio. The program supports 7z,

思则不罔 1269

ESP32-P4开发板实战:从零配置VSCode环境到点亮MIPI-DSI屏幕(避坑指南)

本文详细介绍了ESP32-P4开发板在VSCode环境下的配置流程,包括SDK安装、idf_component.yml依赖管理,以及MIPI-DSI屏幕驱动的实现方法。通过实战指南帮助开发者避开常见配置陷阱,快速完成从环境搭建到屏幕点亮的全流程,适用于物联网和嵌入式开发场景。

pp12345的博客 742

vc++网络安全编程范例(18)-open ssl 实现数字证书编程

数字证书就是互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在Internet上验证您身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由权威机构-----CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方...

chengyixian7877的博客 200

保姆级教程:手把手教你为裕泰微YT8521 PHY芯片编写Linux设备树(DTS)节点与驱动

本文提供了一份详细的保姆级教程,手把手教你为裕泰微YT8521 PHY芯片编写Linux设备树(DTS)节点与驱动。从基础配置到RGMII接口的特殊设置,再到驱动开发的关键步骤和调试技巧,帮助开发者快速掌握PHY芯片的移植与开发。

weixin_33734785的博客 333

仿真学习系列(四十三):Sigrity仿真之平面谐振分析

在 SIGRITY 中,平面谐振分析(Plane Resonance Analysis)是一种用于分析信号完整性(SI)问题的高级仿真方法,尤其关注于层间电磁波的传播、谐振现象和信号衰减等问题。平面谐振分析通常用于电源分配网络(PDN)、信号线和参考平面之间的相互作用。本文将详细介绍如何在 SIGRITY 中进行平面谐振分析,并提供一些实用的分析方法与步骤,帮助工程师们识别和优化可能存在的设计问题。

案例文章,高速信号 480

vc++网络安全编程范例(17)-open ssl 实现文件加密与解密

vc++网络安全编程范例(17)-open ssl 实现文件加密与解密 2011年12月17日   OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。 作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL...

kbk730oe 308

深入详细分析Skyworks 78113 PAMiD射频方案图

是一种高集成度的射频前端模块,它结合了功率放大器(PA)、双工器(Duplexer)、滤波器和开关等多个组件,主要用于4G LTE移动通信系统中的射频前端链路。是一款典型的PAMiD模块,通过将多个频段的发射(TX)和接收(RX)路径集成在一个模块中,大大减少了传统射频设计中的分立器件,同时提高了信号链路的效率和可靠性。模块化设计的优势PCB空间优化:高集成度设计大幅减小了射频电路的尺寸,适用于紧凑型移动设备。减少设计复杂度:模块化设计减少了器件间的匹配与调试工作,加速产品开发周期。性能稳定性。

weixin_43199439的博客 1480

VC++网络安全编程范例(11)-SSL高级加密网络通信

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。  SSL (Secure Socket Layer)   为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)

尹成的技术博客 4858

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

c语言实现des实验报告,DES算法的C语言实现

DES算法的程序实现说明:在VC++6.0中新建基于控制台的Win32应用程序,程序清单如下:#iinclude “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...

weixin_36050671的博客 553

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

vc++网络安全编程范例(21)用CryptoAPI进行数据加密

由于过于复杂的加密算法实现起来非常困难,所以在过去,许多应用程序只能使用非常简单的加密技术,这样做的结果就是加密的数据很容易被人破译。而使用Microsoft提供的加密应用程序接口(即Cryptography API),或称CryptoAPI,可以方便地在应用程序中加入强大的加密功能,而不必考虑基本的算法。本文将对CryptoAPI及其使用的数据加密原理作一简单的介绍,然后给出了用CryptoAP

尹成的技术博客 5106

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: c++继承中的内存布局
下一篇: 关于C++中的接口的问题
雪岢奇
博客等级 码龄17年 310粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值