你好!你先用什么加密方式,程序可以尝试完成
B. 用c++编写一个简单的文件加密程序
我自己想写一个加密的方式
还觉得这个挺难的。
如果真的没有太高的c++这一块的基础的话。
真的是没法做到,因为代码比较难写的。
只能求助于那些摸到水深水浅的那些c++大神们。
之后摸着他(她)们的大腿,然后就说把源代码的思路原形给我!
C. 求一个简单的透明加密源代码
事本没改过一个代码(但要把代码嵌入,所以变大了)
可以象普通记事本那样使用,但储存出来的文件会自动加密.
那么即使别人 走了你的文件,也无法打开看到正确的内容.
如果配合机器码加密的话,那么就算别人把这个记事本Copy走了,也无法打开得到正确的内容.
该技术同样可以应用在任何软件比如 OFFICE 系列上.
这里下载测试的 Notepad.rar
核心代码如下,其中用到我写的 Hook 控件系列和加密方案:
unit MainProc;
interface
uses
Windows, Classes,
HookCoreUnit, EncrypFileUnit;
procere Start;
procere Stop;
implementation
const
ReadFileAddr = $1005244;
ReadFileAddrRts = ReadFileAddr + SizeOf(HookCodeEx);
WriteFileAddr = $1004C2A;
WriteFileAddrRts = WriteFileAddr + SizeOf(HookCodeEx);
var
ReadFileHooker, WriteFileHooker: THookerCoreEx;
MemList: TList;
EF: TEncryptFile;
function EncryptBuffer(hFile: THandle; const Buffer; nNumberOfBytesToWrite: DWORD;
var lpNumberOfBytesWritten: DWORD; lpOverlapped: POverlapped): BOOL; stdcall;
var
Data: PChar;
tmp: string;
Size: DWORD;
begin
Data:= @Buffer;
//加密
tmp:= EF.EncryptBuffer(Data, nNumberOfBytesToWrite);
Size:= Length(tmp);
Result:= WriteFile(hFile, tmp[1], Size, lpNumberOfBytesWritten, lpOverlapped);
end;
function DecryptBuffer(hFileMappingObject: THandle; dwDesiredAccess: DWORD;
dwFileOffsetHigh, dwFileOffsetLow: DWORD; dwNumberOfBytesToMap: DWORD): Pointer; stdcall;
var
MemAddr: Pointer;
tmp: string;
Size: DWORD;
begin
Result:= MapViewOfFile(hFileMappingObject, dwDesiredAccess, dwFileOffsetHigh, dwFileOffsetLow, dwNumberOfBytesToMap);
//解密
tmp:= EF.DecryptBuffer(Result, dwNumberOfBytesToMap);
Size:= Length(tmp);
//如果解密有效
if Size <> 0 then
begin
//分配内存
MemAddr:= VirtualAlloc(nil, Size, MEM_COMMIT, PAGE_READWRITE);
CopyMemory(MemAddr, @tmp[1], Size);
Result:= MemAddr;
//加入内存表
MemList.Add(Result);
end; //解密不了按原内容打开
end;
procere ProcessReadFile;
asm
//解密
call DecryptBuffer
//返回
push ReadFileAddrRts
end;
procere ProcessWriteFile;
asm
//加密
call EncryptBuffer;
//返回
push WriteFileAddrRts
end;
//需要控件的请联系 [email protected](msn), 非商用勿扰
procere Start;
begin
{$I .\K_SDK\VM_Start.inc}
EF:= TEncryptFile.Create(nil);
EF.Enable_Encryption:= True;
EF.E_PGM:= True;
EF.FileHead:= 'NotepadEx';
MemList:= TList.Create;
ReadFileHooker:= THookerCoreEx.Create;
ReadFileHooker.HookType:= CHT_JMP;
ReadFileHooker.Instruction:= PHookCodeEx(ReadFileAddr);
ReadFileHooker.Event:= DWORD(@ProcessReadFile);
WriteFileHooker:= THookerCoreEx.Create;
WriteFileHooker.HookType:= CHT_JMP;
WriteFileHooker.Instruction:= PHookCodeEx(WriteFileAddr);
WriteFileHooker.Event:= DWORD(@ProcessWriteFile);
ReadFileHooker.Hook:= True;
WriteFileHooker.Hook:= True;
{$I .\K_SDK\VM_End.inc}
end;
procere Stop;
var
i: Integer;
begin
{$I .\K_SDK\VM_Start.inc}
WriteFileHooker.Hook:= False;
ReadFileHooker.Hook:= False;
WriteFileHooker.Free;
ReadFileHooker.Free;
//释放内存
for i:= 0 to MemList.Count - 1 do
VirtualFree(MemList[i], 0, MEM_RELEASE);
MemList.Free;
EF.Free;
{$I .\K_SDK\VM_End.inc}
end;
end.
D. 代码加密怎么实现
你是想利用什么加密,加密方法有很多.
E. VB.net实现简单的加密解密--->该怎么写代码
什么~~这也叫加密啊,那我教你一招超简单的"加密"方法
一个textbox1(输入文本的) button1(名为加密) button2(名为解密)
button1的单击事件 TextBox1.Font = New System.Drawing.Font("Symbol", CType(9, Byte))
button2的单击事件 TextBox1.Font = New System.Drawing.Font("宋体", CType(9, Byte))
如果你要有密码的,你可以dim一个变量用来存储textbox2的值然后用来判断密码是否输入正确
F. #试一试# 编写程序实现简单的字符串加密
代码和运行情况如下:
G. 加密算法实现代码
这个是界面效果,我不是用C++写的,是用C#写的可以参考下:
实现的代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Collections;
usingSystem.IO;
usingSystem.Security.Cryptography;
usingSystem.Security;
namespaceKey
{
publicpartialclassfrmKey:Form
{
privatestringkey;//默认密钥"yupengcheng"
privatebyte[]sKey;
privatebyte[]sIV;
publicfrmKey()
{
InitializeComponent();
}
privatevoidForm1_Load(objectsender,EventArgse)
{
button4.Enabled=false;
}
///<summary>
///选择输入路径
///</summary>
privatevoidbutton1_Click(objectsender,EventArgse)
{
//openFileDialog1.Filter="所有文件(*.*)|*.*";
openFileDialog1.ShowDialog();
stringfilename=openFileDialog1.FileName;
inti=filename.LastIndexOf(".");
if(i!=-1)
{
stringfiletype=filename.Substring(filename.LastIndexOf("."));
if(this.radioButton1.Checked)
{
filename=filename.Replace("(解密文件)","");
textBox2.Text=filename.Substring(0,filename.LastIndexOf("."))+"(加密文件)"+filetype;
}
else
{
filename=filename.Replace("(加密文件)","");
textBox2.Text=filename.Substring(0,filename.LastIndexOf("."))+"(解密文件)"+filetype;
}
}
if(filename!="")
{
textBox1.Text=openFileDialog1.FileName;
}
}
///<summary>
///选择输出路径
///</summary>
privatevoidbutton4_Click(objectsender,EventArgse)
{
this.saveFileDialog1.ShowDialog();
if(saveFileDialog1.FileName!="")
{
this.textBox2.Text=saveFileDialog1.FileName;
}
}
///<summary>
///加密radioButton
///</summary>
privatevoidradioButton1_CheckedChanged(objectsender,EventArgse)
{
button3.Text="开始加密";
}
///<summary>
///解密radioButton
///</summary>
privatevoidradioButton2_CheckedChanged(objectsender,EventArgse)
{
button3.Text="开始解密";
}
///<summary>
///明密/暗密
///</summary>
privatevoidbutton2_Click(objectsender,EventArgse)
{
if(button2.Text=="明密")
{
textBox3.PasswordChar=Convert.ToChar(0);
button2.Text="暗密";
}
else
{
textBox3.PasswordChar=char.Parse("*");
button2.Text="明密";
}
}
///<summary>
///开始加密/开始解密
///</summary>
privatevoidbutton3_Click(objectsender,EventArgse)
{
if(this.textBox1.Text==""||this.textBox2.Text=="")
{
MessageBox.Show("文件路径不能为空!","警告提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);
return;
}
if(textBox3.Text!="yupengcheng")
{
MessageBox.Show("输入的密码不正确,请重新输入!","错误提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
textBox3.Text="";
return;
}
else
{
key="yupengcheng";
if(button3.Text=="开始加密")
{
statusBar1.Visible=true;
statusBar1.Text="正在加密文件,请等待.....";
if(EncryptFile(this.textBox1.Text,this.textBox2.Text,textBox3.Text))
{
statusBar1.Text="加密完成。";
MessageBox.Show("文件加密成功!","成功提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
statusBar1.Visible=false;
}
else
{
statusBar1.Visible=true;
statusBar1.Text="正在解密文件,请等待.....";
if(DecryptFile(this.textBox1.Text,this.textBox2.Text,textBox3.Text))
{
statusBar1.Text="解密完成。";
MessageBox.Show("文件解密成功!","成功提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
statusBar1.Visible=false;
}
}
}
///<summary>
///取消
///</summary>
privatevoidbutton5_Click(objectsender,EventArgse)
{
Application.Exit();
}
///<summary>
///加密方法
///</summary>
///<paramname="filePath">加密输入路径</param>
///<paramname="savePath">加密输出路径</param>
///<paramname="keyStr">密匙</param>
///<returns></returns>
publicboolEncryptFile(stringfilePath,stringsavePath,stringkeyStr)
{
DESCryptoServiceProviderdes=newDESCryptoServiceProvider();
if(keyStr=="")
keyStr=key;
try
{
FileStreamfs=File.OpenRead(filePath);
byte[]inputByteArray=newbyte[fs.Length];
fs.Read(inputByteArray,0,(int)fs.Length);
fs.Close();
byte[]keyByteArray=Encoding.Default.GetBytes(keyStr);
SHA1ha=newSHA1Managed();
byte[]hb=ha.ComputeHash(keyByteArray);
sKey=newbyte[8];
sIV=newbyte[8];
for(inti=0;i<8;i++)
sKey[i]=hb[i];
for(inti=8;i<16;i++)
sIV[i-8]=hb[i];
des.Key=sKey;
des.IV=sIV;
MemoryStreamms=newMemoryStream();
CryptoStreamcs=newCryptoStream(ms,des.CreateEncryptor(),CryptoStreamMode.Write);
cs.Write(inputByteArray,0,inputByteArray.Length);
cs.FlushFinalBlock();
fs=File.OpenWrite(savePath);
foreach(bytebinms.ToArray())
{
fs.WriteByte(b);
}
fs.Close();
cs.Close();
ms.Close();
returntrue;
}
catch
{
MessageBox.Show("找不到指定的文件,请重新输入!","警告提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);
returnfalse;
}
}
///<summary>
///解密方法
///</summary>
///<paramname="filePath">解密输入路径</param>
///<paramname="savePath">解密输出路径</param>
///<paramname="keyStr">密匙</param>
///<returns></returns>
publicboolDecryptFile(stringfilePath,stringsavePath,stringkeyStr)
{
DESCryptoServiceProviderdes=newDESCryptoServiceProvider();
if(keyStr=="")
keyStr=key;
try
{
FileStreamfs=File.OpenRead(filePath);
byte[]inputByteArray=newbyte[fs.Length];
fs.Read(inputByteArray,0,(int)fs.Length);
fs.Close();
byte[]keyByteArray=Encoding.Default.GetBytes(keyStr);
SHA1ha=newSHA1Managed();
byte[]hb=ha.ComputeHash(keyByteArray);
sKey=newbyte[8];
sIV=newbyte[8];
for(inti=0;i<8;i++)
sKey[i]=hb[i];
for(inti=8;i<16;i++)
sIV[i-8]=hb[i];
des.Key=sKey;
des.IV=sIV;
MemoryStreamms=newMemoryStream();
CryptoStreamcs=newCryptoStream(ms,des.CreateDecryptor(),CryptoStreamMode.Write);
cs.Write(inputByteArray,0,inputByteArray.Length);
cs.FlushFinalBlock();
fs=File.OpenWrite(savePath);
foreach(bytebinms.ToArray())
{
fs.WriteByte(b);
}
fs.Close();
cs.Close();
ms.Close();
returntrue;
}
catch
{
MessageBox.Show("找不到指定的文件,请重新输入!","警告提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);
returnfalse;
}
}
privatevoidtextBox1_TextChanged(objectsender,EventArgse)
{
if(textBox1.Text==""||textBox1.Text==null)
{
button4.Enabled=false;
}
else
{
button4.Enabled=true;
}
}
}
}
H. 我是大一学生,刚学c语言,请问怎么用代码实现给文件保密。简单的加密。注:我们是在linux环境下编程。
调用 zip 压缩加密码。绝对取巧但有效!
不过如果是 Linux 下面,你有很多函数库可以找。
其实加密随便啦,只要让别人不能读取出来就行了。可以说用 base64 转码一下都有加密效果。加密算法有很多的,只要别用不可逆就行了。最简单的来说,用密码异或一下就算入门加密技术了。