急!急急!急!!!最好是详解的 谢谢 谢谢 谢谢 谢谢 谢谢 谢谢 谢谢 谢谢 谢谢 谢谢 谢谢 谢谢 谢谢 谢谢 谢谢 谢谢!!!!!!!!!!!
ããcè¯è¨æ件å å¯å解å¯æ¹æ³å¦ä¸ï¼
ãã1ãé¦å
æå¼VC++6.0ï¼
ãã2ãéæ©æ件ï¼æ°å»ºï¼
ãã3ãéæ©C++ source file æ°å»ºä¸ä¸ªç©ºç½ææ¡£ï¼
ãã4ã声æ头æ件
ãã#include<stdio.h>
ãã#include<stdlib.h>
ãã#include<string.h>
ããé¦å å个å å¯å½æ°ï¼ç®æ³å°±æ¯ç®ä»é说ç;ãã
void EncryptFile(FILE *sfp,FILE *dfp,char pwd)ãã{
ããchar ch;
ããif(sfp==0||dfp==0)
ãã{
ããprintf("ERROR!\n");
ããreturn;
ãã}
ããwhile((ch=fgetc(sfp))!=EOF)
ãã{
ããif((ch>='a')&&(ch<='z'))
ãã{
ããch=(ch-'a'+1)%26+'a';
ããch=ch^pwd;
ãã}
ããif((ch>='A')&&(ch<='Z'))
ãã{
ããch=(ch-'A'+1)%26+'A';
ããch=ch^pwd;
ãã}
ããfputc(ch,dfp);
ãã}
ãã}
ããå解å¯åå½æ°ï¼ä¸å å¯çè¿ç¨ç¸å;ã
ãvoid DecryptFile(FILE *sfp,FILE *dfp,char pwd)ãã{
ããchar ch;
ããwhile((ch=fgetc(sfp))!=EOF)
ãã{
ããif((ch>='a')&&(ch<='z'))
ãã{
ããch=ch^pwd;
ããch=(ch-'a'+25)%26+'a';
ãã}
ããif((ch>='A')&&(ch<='Z'))
ãã{
ããch=ch^pwd;
ããch=(ch-'A'+25)%26+'A';
ãã}
ããfputc(ch,dfp);
ãã}
ãã}
ããè¾åºå½æ°ï¼è¾åºæ件å 容
ããvoid OutputFile(FILE *fp)
ãã{
ããchar ch;
ããwhile((ch=fgetc(fp))!=EOF)
ããputchar(ch);
ãã}
ããã主å½æ°ï¼ä¸»è¦è°ç¨è¿å 个å½æ°
ããint main()
ãã{
ãã/*ç¨æ·è¾å ¥çè¦å å¯çæ件å*/
ããchar sfilename[20];
ãã/*ç¨æ·è¾å ¥å å¯åä¿åçæ件å*/
ããchar dfilename[20];
ãã/*ç¨æ¥ä¿åå¯ç å符*/
ããchar pwd;
ããFILE *sfp,*dfp;
ããprintf("\nPlease input filename to be encrypted:\n");
ãã/*å¾å°è¦å å¯çæ件å*/
ããgets(sfilename);
ãã/*å¾å°å å¯åä½ è¦çæ件å*/
ããprintf("input filename to save the encrypted file:\n");
ããgets(dfilename);
ãã/*å¾å°å å¯å符*/
ããprintf("Please input your Password:\n");
ãã//scanf("%c",&pwd);
ããpwd=getch();
ãã/*å±å¹ä»¥*æ¥è¡¨ç¤ºè¾å ¥çå å¯å符*/
ããprintf("*\n");
ãã/*以åªè¯»æ¹å¼æå¼è¦å å¯çæ件*/
ããif((sfp=fopen(sfilename,"r"))==0)
ãã{
ããprintf("Can't open the file :%s\n",sfilename);
ããexit(0);
ãã}
ãã/*è¾åºè¦å å¯çæ件*/
ããprintf("\nThe the text of file to be encrypted is:\n");
ããOutputFile(sfp);
ãã/*建ç«å å¯åçæ件*/
ããif((dfp=fopen(dfilename,"w+"))==0)
ãã{
ããprintf("Can't open or create the file :%s\n",dfilename);
ãã//exit(0);
ãã}
ãã/*æ件å å¯*/
ããfseek(sfp,0L,SEEK_SET);
ããEncryptFile(sfp,dfp,pwd);
ããprintf("\n\nEncrypted the file successfully!\n");
ãã/*è¾åºå å¯åçæ件*/
ããprintf("\nAfter encrypting the text of file is:\n");
ããfseek(dfp,0L,SEEK_SET);
ããOutputFile(dfp);
ããfclose(sfp);
ããfclose(dfp);
ããgetch();
ããreturn 0;
ãã}
ã
简单的加密大概就是从需要加密的文件中一个个读取字符,然后对该字符进行加密算法(可以进行异或什么的),把处理后的字符存入另外一个人文件。这其中也就涉及到简单的文件操作,不会太难,楼主最好自己写吧
解密也是一个思路,就是反向的读取另外一个文件,把加密的算法倒过来算就行了。追问
我对你景仰之心,犹如滔滔黄河,一发而不可收拾,交个朋友!
顺便说一下,我还是个新手,只学了半学期,你说的好有深度啊,我至今还听不懂,能在详细点么? 谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
主要先看文件操作那个部分,下面那个程序是加密部分的,你弄懂了就知道解密该怎么办。加密算法也可以自己随便写,自己懂就OK了,不懂的函数上百度搜一下
#include
#include
#include
void encrypt(char *f1,char *pwd,char *f2)
{
int i=0;
FILE *fp1,*fp2; //两个文件的句柄,fp1为需要加密的文件,fp2为保存加密后的文件
char ch;
fp1=fopen(f1,"rb"); //以读的方式打开要加密的文件
if(fp1==NULL)
{
printf("open failed!\n");
exit(1);
}
if((fp2=fopen(f2,"wb"))==NULL)//以写的方式打开另外一个文件
{
printf("open failed!\n");
exit(1);
}
ch=fgetc(fp1);//fgetc()就是从文件中读取一个字符
while(!feof(fp1))//判断文件是否读完
{
ch=ch^*(pwd+i);//对读取的一个字符,进行异或
i++;
fputc(ch,fp2);//把处理后的字符写入另外一个文件
ch=fgetc(fp1);//然后再从要加密的文件中读取下一个字符
if(i>9)
{
i=0;
}
}
fclose(fp1);//关闭文件
fclose(fp2);
}
void main()
{
char f1[30];
char f2[30];
char pwd[10];
printf("sourcefile:");
scanf("%s",f1);//输入要加密文件的路径,放C盘就输C://
printf("password:");
scanf("%s",pwd);//密码主要用于字符的加密
printf("destinationfile:");
scanf("%s",f2);//保存加密文件的路径
encrypt(f1,pwd,f2);//调用函数
}
如果你是为应用,有dll函数可参考
原型:
int WINAPI icePub_encryptFile(char *strFilename, char *strOutputFilename, char *strKey)
输入:strFilename 待加密文件名
strOutputFilename 加密后文件名
strKey 密钥串,任意长度
输出:
返回码:
原型:
int WINAPI icePub_decryptFile(char *strFilename, char *strOutputFilename, char *strKey)
输入:strFilename 加密文件名
strOutputFilename 解密后文件名
strKey 密钥串,任意长度
输出:
返回码:
Char key[128];
strcpy(key,"11223344");
typedef int (WINAPI ICEPUB_ENCRYPTFILE)(char *strFilename, char *strOutputFilename, char *strKey);
ICEPUB_ENCRYPTFILE *icePub_encryptFile = 0;
HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll");
if(hDLLDrv)
{
icePub_encryptFile=(ICEPUB_ENCRYPTFILE *)GetProcAddress(hDLLDrv,"icePub_encryptFile");
}
if(icePub_encryptFile)
icePub_encryptFile("e:\\a.jpg","e:\\a.dat",key);
if(hDLLDrv)
FreeLibrary(hDLLDrv);
Char key[128];
strcpy(key,"11223344");
typedef int (WINAPI ICEPUB_DECRYPTFILE)(char *strFilename, char *strOutputFilename, char *strKey);
ICEPUB_DECRYPTFILE *icePub_decryptFile = 0;
HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll");
if(hDLLDrv)
{
icePub_decryptFile=(ICEPUB_DECRYPTFILE *)GetProcAddress(hDLLDrv,"icePub_decryptFile");
}
if(icePub_decryptFile)
icePub_decryptFile("e:\\a.dat","e:\\a.jpg",key);
if(hDLLDrv)
FreeLibrary(hDLLDrv);追问
我们这是课程设计
追答呕,卖嘎得
冒汗,楼下的大虾来支援...
参考资料:icePubDll.dll百度之