文件異或加密
太麻煩了,建議您可以下載文件夾加密超級大師試試。
文件夾加密超級大師支持所有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");
}