实现文件加密功能

2016-01-29 12:13 5 1 收藏

实现文件加密功能,实现文件加密功能

【 tulaoshi.com - C语言心得技巧 】

实现文件加密功能
作者:林静

下载本文示例源代码

我前几天在VC知识库(VCKBASE.COM)下载了一个 "徐景周" 做的一个叫<加密之星的小工具的源代码,我把它编译后拿文件来实验一下发现它对大多数文件都不管用.比如,加密文本文件只有文件的前一部分被加密而大部分还完整的存在, 如果用来加密mp3,简直就不起作用,加密后的mp3还是能很好的从头播放的尾..所以我自己发明了一种文件加密的方法,虽然很简单,但是能安全地加密任何计算机上的文件而且还可以用同一密码对同一文件进行多次加密。

我用的方法是把文件从头到尾的每一个字节都读出来然后加密,.

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

具体做法如下:(请参照源代码);

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

新建一个基于对话框的工程(起名为ecflie,然后去掉确定、取消、和系统添加的静态控件.在对话框添加三个按钮和两个编辑控件.给两个编辑控件分别关联变量CString m_path和CString m_pass,其中m_pass作为用户输入的密码,m_path作为文件路径;
其中三个按钮分别为浏览、加密、解密按钮.
添加以下函数:

__int64 epass();        //密码初始化函数BOOL ecfile(LPCTSTR fpath);//文件加密函数BOOL dcfile(LPCTSTR fpath);//文件解密函数
//给文件加密的函数
BOOL CEcfileDlg::ecfile(LPCTSTR fpath){char *data;CFile *file;DWORD flen;m_password = epass();//密码初始化file = new CFile;if ( !file->Open(fpath, CFile::shareDenyNone|CFile::modeReadWrite)){return FALSE;}flen = file->GetLength();data = new char[(int)flen];//为文件分配内存file->SeekToBegin();file->Read(data, flen);        //这里把文件的所有字节都进行加密了for(int i=0; i<(int)flen; i++){data[i] ^= m_password;data[i] ^= flen;                //因为每次加密后文件的大小都会增加5字节,所以如果两次用同一密码进行加密也没关系}file->SeekToBegin();file->Write(data, flen);delete[] data;                          //先释放内存//添加密码验证信息char cpass[5] = "love";for(int j=0; j<5; j++){cpass[j] ^= m_password;}file->SeekToEnd();file->Write(&cpass, 5);        //在文件尾添加密码严整部分,,这样文件就会增加5字节file->Close();delete file;return TRUE;}
//给文件解密的函数
BOOL CEcfileDlg::dcfile(LPCTSTR fpath){char *data;CFile *file;DWORD flen;char love[5];file = new CFile;if( !file->Open(fpath, CFile::shareDenyNone|CFile::modeReadWrite)){return FALSE;}flen = file->GetLength();data = new char[(int)flen];//检验密码是不是正确file->Seek(-5, CFile::end);file->Read(&love, 5);m_password = epass();for(int i=0; i<5; i++){              love[i] ^= m_password;}if(strcmp(love, "love")!=0){return FALSE;}//解密file->SeekToBegin();file->Read(data, flen);        //按照原来的方法进行解密for(int j=0; j<(int)flen; j++){data[j] ^= m_password;data[j] ^= (flen-5);}file->SeekToBegin();file->Write(data, flen);file->SetLength(flen-5);     //删除加密是添加的密码验证部分file->Close();delete[] data;delete file;return TRUE;}
上面取得密码的函数(m_password = epass();)可以自己定义,我只把密码进行简单的运算:
__int64 CEcfileDlg::epass(){DWORD plen;char *ppass;__int64 mc= 8757735233305;UpdateData(TRUE);ppass = m_pass.GetBuffer(0);plen = strlen(ppass);for(int i=0; i<(int)plen; i++){mc ^= ppass[i]|128;}return mc;}
然后在适当的地方调用这两个函数就可以了.具体细节请查看源代码,(在WIN XP下调试通过了)。

来源:https://www.tulaoshi.com/n/20160129/1485153.html

延伸阅读
标签: 电脑 文件 加密
下载加密工厂登录 管理员身份登录软件,试用版ID统一为888. 如果是正式版的可以勾选“保存登录ID” 进入界面 点击“添加文件”添加需要加密的文档。试用版一次性只能添加10个文件 高级管理 管理员可以在加密之前,进入右下角的“管理功能”选择“高级管理”对文件进行详细的设置。具体设置选项如下图 开始加密 ...
标签: 电脑入门
这个很简单,就是在压缩时设置密码就行了。 右击要压缩的文件或文件夹,从弹出的快捷菜单中选择添加到压缩文件,在压缩文件名和参数窗口的高级选项卡中单击设置密码按钮。 在随后弹出的带密码压缩窗口中设置好密码,确定。再确定,开始压缩。 我们还可以把某些重要的文件伪装成其它类型的文件来达到加密的目的。例如我要加密一个list...
标签: 电脑 文件
点击右键 压缩包加密的方法,找到文件,右键点击。 添加文件 找到添加到压缩文件,点击。 点击添加密码 输入密码 进入后就可以写密码了。 隐藏文件夹 二隐藏文件夹步骤: 鼠标右击要隐藏的文件夹属性。 确认隐藏 在“属性”面板上点击“隐藏”,然后确认,这样就隐藏了。 更多内容请查看: ...
标签: ASP
  采用WEB技术实现B/S(浏览器/服务器)结构的管理系统是办公自动化的发展趋势。基于WEB技术的管理系统,由于开发周期短;与用户平台无关;易于实现交互式应用;能对信息进行快速、高效的收集、处理和发布,近几年来得到了迅速发展。而ASP技术由于其开发效率高、交互性好,安全性强等特点,逐渐成为开发管理系统的首选工具。 许...
加密应用Signal功能介绍   如果你非常在意自己通讯的私密性的话,那么可以尝试一下Signal这款应用,因为连斯诺登都很信赖它。 Signal安卓版下载:暂未收录 Signal最早在半年前发布了iOS版本,现在它已经登陆Android平台了。Signal整合了TextSecure的文字聊天功能和RedPhone的通话功能。 Signal Signal的优势在...

经验教程

479

收藏

49
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部