文件异或加密
太麻烦了,建议您可以下载文件夹加密超级大师试试。
文件夹加密超级大师支持所有windows系统,可以加密文件夹,加密文件,保护磁盘和数据粉碎,使用起来非常方便。
‘贰’ 急求:c语言中文件异或加密解密的乱码问题!
把
j=strlen(password);
ch=fgetc(fp1);
while(!feof(fp1))
for(i=0;i<j;i++)
{ fputc(ch^password[i],fp2);
ch=fgetc(fp1);
}
改成下面的试试
j=strlen(password);
while(!feof(fp1))
{
ch = fgetc(fp1);
fputc(ch^password[i++], fp2);
if(i == j)
i = 0;
}
‘叁’ 在java中用异或为各种形式的文件加密
对文件的每个字节进行xor运算即可
byte b=//从文件读取
byte k=50; //密键
fout.write(b^k);//写到加密文件中
‘肆’ 设计一种很难被破解的异或加密方法
按现在的cpu速度,哪怕不用电脑,用现在手机的cpu都绝对可以在1秒内破解出来,这个所谓的加密操作实际上等于0 除非你的文件内容原文就是不可读的(这样不管破解成功还是失败,破解者都没法知道,即使成功了看见的解密结果也是个乱码。。。囧。。所以不可能破解到) 异或加密是强度极低的一种方式,除非极长的密钥,希望获得比较靠谱的加密,还是分组交换式加密方案可取,比如DES加密。
‘伍’ 一个基于异或的加密算法
大哥……你连流程图都画出来了……代码还不懂写……另外这个也不难吧~~就异或操作而已…………最简单的加密的了,小数那里你把它扩大再提取出来即可
……实在不行再帮你看看~~~~最好自己先尝试做~
==================================================================
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
//参数一:源文件 参数二:目标文件
//例如: XorProject.exe aa.txt bb.txt
int main( int argc , char* argv[] )
{
ifstream inf;
ofstream ouf;
string param;
if ( argc < 3)
{
cerr<<"缺少参数"<<endl;
return -1;
}
inf.open( argv[1] , ios::in | ios::binary );
ouf.open( argv[2] , ios::out | ios::binary | ios::trunc );
if ( !inf.is_open() || !ouf.is_open() )
{
cerr<<"打开文件失败"<<endl;
return -2;
}
double x0 = 0.0;
double u = 0.0;
cout<<"请输入u的值:";
cin>>u;
cout<<"请输入x0的值:";
cin>>x0;
double xn = x0;
int i;
for ( i = 0; i < 1000; i++ )
{
xn = u * xn * ( 1 - xn );
}
inf.seekg( 0 , ios::end );
unsigned long file_size = inf.tellg();
unsigned long p = 0;
inf.seekg( 0 , ios::beg );
while ( p < file_size )
{
unsigned char c;
inf.read( (char*)&c , 1 ); //读1个字节
int Y = ((int)(xn * 10000000)) % 1000; //取5 6 7位
int Z = Y % 256;
c ^= Z;
ouf.write( (char*)&c , 1 ); //写入加密后的1字节
for ( i = 0; i < 5; i++ )
{
xn = u * xn * ( 1 - xn );
}
p++;
}
inf.close();
ouf.close();
return 0;
}
代码比较简单,另外要注意一下,像你那样1000次迭达,感觉用处不太大,反而会导致xn的值接近0,所以你在输入x0的时候必须要输入一个接入1的数,否则经过这么多次迭代后xn就变成了0了,高精度运算也没用,5、6、7位都已经是0了,意义不太大
‘陆’ 异或加密与解密(C语言)注释
异或运算有一个特性
若
c = a xor b
那么
a = c xor b
根据这样的特性,你有一个信息a,然后你产生一个密码b,把它和a异或运算之后就变成了c。这就是一种加密,解密的时候,把c重新和b异或运算,就变回了a。
顺带说一下,异或是很弱的加密方法,很容易被破解的。
‘柒’ 我用C语言中的异或方式编写了一个文件加密软甲,那么这种加密方法能破解吗,怎么破解
这个要看您的软件的加密强度了。
文件加密软件,我使用的是超级加密3000.
超级加密3000采用国际上成熟的加密算法和安全快速的加密方法,可以有效保障数据安全!
‘捌’ 如何利用批处理对文件进行位异或加解密
批处理不具备位异或加解密功能
批处理的执行器cmd.exe不能读取文件二进制数据,在此基础上的加解密工作不能简单实现
可以通过第三方工具而达到目的
例如用C++编写命令行程序
‘玖’ 如何用C语言对文件进行加密和解密
对于加密要求不高的完全可以自己定义规则来进行加密。这种加密是很简单很自由的,例如你在存文件的时候可以将文件中的每个字符都加上一个数,然后读取该文件的时候再每个字符相应地减去那个数,即可实现就简单的加密,这样你储存的文件看上去就是乱码了。只是这个规则太简单,规则你可以自己定,加密与解密对着来就行了。
下面程序用异或操作对文件进行加密和解密
/****************** 设计思路 ******************/
// 根据用户输入的加密/机密密码,
// 每次都拿原文件和密码等长度的一个字符串和密码
// 对应元素异或进行加密/解密
// 另外因为是用异或方法,所以加密和解密就是同一个程序
// 即按照同样的加密即是对文件的解密
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
#include <stdlib.h>
char filename[256]; // 原文件
char password[256]; // 加密/解密密码
const char filenametemp[] = "temp15435255435325432543.temp"; // 加密/解密中间文件
void inputpass(char *pass); //密码输入以"******"显示
void main() {
FILE *fp; // 加密/解密的文件
FILE *fptemp; // 加密/解密过程临时文件
int pwdlen; // 密码长度
int i = 0; // 计数器
char ch = 0; // 读入的字符
printf("请输入要加密/解密的文件名(全路径名): \n");
gets(filename);
if( (fp = fopen(filename, "rb")) == NULL) {
printf("找不到文件 %s\n", filename);
exit(1);
} // if
printf("请输入要加密/解密的密码: \n");
inputpass(password);
pwdlen = strlen(password);
if(pwdlen == 0) {
printf("密码不能为空,加密/解密失败\n");
exit(1);
} // if
fptemp = fopen(filenametemp, "wb"); // 打开中间文件
while(1) {
ch = fgetc(fp);// 从原文件读入一个字符
if(feof(fp)) { // 已经读到文件尾
break; // 退出循环
}
ch ^= password[i++]; // 对原字符和密码进行异或操作
fputc(ch, fptemp); // 将异或结果写入中间文件
if(i == pwdlen) { // 使得原文件每和密码长度相同的固定长度异或加密
i = 0;
}
} // while
fclose(fp); // 关闭打开原文件
fclose(fptemp); // 关闭打开中间文件
remove(filename); // 删除原文件
rename(filenametemp, filename); // 将中间文件重命名为原文件
printf("加密/解密成功\n"); // 至此加密/解密成功
}
// 密码输入以"******"显示
void inputpass(char *pass) {
int i = 0;
char c;
while(isprint(c = getch())) {
pass[i++] = c;
// printf("*");
}
pass[i] = '\0';
printf("\n");
}