『壹』 MATLAB數學建模作業:使用暴力攻擊,你能解開這個異或加密嗎
code=uint8(csvread('路徑\cipher1.txt'));
decode=zeros(size(code),class(code));
key=zeros(1,3,'uint8');
for ii=1:3
for ch=uint8('a':'z')
temp=bitxor(ch,code(ii:3:end));
if all((temp>=' '&temp<='Z')|temp>='a'&temp<='z')
key(ii)=ch;
decode(ii:3:end)=temp;
break;
end
end
char(key)
end
keytext=char(key); %破解密鑰的三個字元
codetext=char(decode); %破解的文本
n=sum(double(decode)); %破解文本ascii碼的和
破解得到密鑰是『god』
『貳』 異或加密與解密(C語言)注釋
異或運算有一個特性
若
c = a xor b
那麼
a = c xor b
根據這樣的特性,你有一個信息a,然後你產生一個密碼b,把它和a異或運算之後就變成了c。這就是一種加密,解密的時候,把c重新和b異或運算,就變回了a。
順帶說一下,異或是很弱的加密方法,很容易被破解的。
『叄』 一個基於異或的加密演算法
大哥……你連流程圖都畫出來了……代碼還不懂寫……另外這個也不難吧~~就異或操作而已…………最簡單的加密的了,小數那裡你把它擴大再提取出來即可
……實在不行再幫你看看~~~~最好自己先嘗試做~
==================================================================
#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++中異或運算是什麼意思如qwe∧4是什麼意思。
異或是一種邏輯運算,在c中的異或是針對二進制數據間的運算來說的
兩個二進制數逐位進行異或運算,當位上的數相同時得到0,不同時得到1
比如:10^14=4
1010B
1110B
0100B按位運算得到結果,比如最高位1^1=0,次高位0^1=1
異或運算常用在檢測二進制某位上是否與模板不同或者進行加密解密方面。
異或運算的特點:
一個數和自身異或得到0
一個數A如果和B異或得到C,那麼C再和B進行異或會肯定還原得到A,B就是加密密鑰
『伍』 什麼是異或加密
異或的特點是原始值經過兩次異或某一個數後會變成原來的值,所以有時利用這個特性來進行加密,加密端把數據與一個密鑰進行異或操作,生成密文。接收方收到密文後利用加密方提供的密鑰進行再次異或操作就能得到明文。loop是匯編語言中的循環指令。它對cx進行減1,如果不為0則跳到循環首部繼續執行循環體。如果為0,執行loop的下一條指令。
『陸』 C語言異或加密這個編程怎麼寫
字元A 異或 字元C 在c語言里這樣寫:
char val = 'A' ^ 'C';
『柒』 異或加密演算法中對於異或的數有要求嗎
異或的數是秘鑰,沒有任何特殊要求,但是你將來解密也要用它,否則就亂了。
『捌』 如何利用異或運算進行簡單加密解密
利用「^」異或運算對字元串進行加密
思路:1.先創建字元串輸入的Scanner;
2.通過char[] array = password.toCharArray();// 獲取字元數組;
3.遍歷字元數組,按目前理解要用到遍歷:數組所有元素進行訪問,比如你要輸出數組里所有的信息時,就要用到
4.進行異或運算
按位做「異或」運算是:位值相同得1,不同得0
例如:
< 加密過程:>
原解釋的二進制為 1 1 0 0 ----原文
設定的key的二進制為 0 1 1 0 ----密匙
兩者做「異或」結果為 0 1 0 1 ----密文
< 解密過程:>
0 1 0 1----密文
0 1 1 0----密匙
兩者「異或」就得到了原文 1 1 0 0 ----原文
詳細代碼:
package com.lixiyu;
import java.util.Scanner;
public class Example {
public static void main(String[] args){
Scanner sca=new Scanner(System.in);
System.out.println("請輸入一個英文字元串或解密字元串");
String line=sca.nextLine();//獲取用戶輸入信息
char[] array=line.toCharArray();//獲取字元數組
for (int i=0;i<array.length;i++){//歷遍字元數組
array[i]=(char) (array[i]^20000);//對數組每個元素進行異或運算
}
System.out.println("加密解密結果如下:");
System.out.println(new String(array));//輸出密鑰
}
}
異或運算:
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0
字元'A' 的ASCII編碼為65 : 00000000 01000001
取整數7 : 00000000 00000000 00000000 00000111
XOR運算後 : 00000000 00000000 00000000 01000110
簡單加密演算法代碼如下 :
public class Test {
public static final int KEY = 7;
public static void main(String[] args) {
String str = "Hello World!";
StringBuffer str2 = new StringBuffer(); //存儲加密後的字元串
StringBuffer str3 = new StringBuffer(); //存儲解密後的字元串
//加密過程
for(int i=0;i<str.length();i++)
{
char c = (char)(str.charAt(i) ^ KEY);
str2.append(c);
}
//解密過程
for(int i=0;i<str2.length();i++)
{
char c = (char)(str2.charAt(i) ^ KEY);
str3.append(c);
}
System.out.println("原始 的字元串為:" + str);
System.out.println("加密後 的字元串為:" + str2);
System.out.println("解密後 的字元串為:" + str3);
}
}
輸出:
原始 的字元串為:Hello World!
加密後 的字元串為:Obkkh'Phukc&
解密後 的字元串為:Hello World!
『玖』 明文,密鑰,和密文是什麼意思
明文、密鑰和密文的意思分別是:
1、明文:
明文,是指沒有加密的文字(或者字元串),一般人都能看懂的意思,屬於密碼學術語。在通信系統中它可能是比特流,如文本、點陣圖、數字化的語音或者數字化的視頻圖像等。
2、密鑰:
密鑰是一種參數,它是在明文轉換為密文或將密文轉換為明文的演算法中輸入的參數。密鑰分為對稱密鑰與非對稱密鑰。
3、密文:
密文是加了密的的文字,明文是加密之前的文字。加密這個詞有時指密文,但通常用來指加密的方法。對明文施加某種偽裝或變換後的輸出。也可理解為不可直接理解的字元或比特集。但可通過演算法還原的被打亂的消息,與明文相對。
(9)異或加密密鑰是什麼擴展閱讀:
信息發送者用公開密鑰去加密,而信息接收者則用私用密鑰去解密。公鑰機制靈活,但加密和解密速度卻比對稱密鑰加密慢得多。
所以在實際的應用中,人們通常將兩者結合在一起使用,例如,對稱密鑰加密系統用於存儲大量數據信息,而公開密鑰加密系統則用於加密密鑰。
對於普通的對稱密碼學,加密運算與解密運算使用同樣的密鑰。通常,使用的對稱加密演算法比較簡便高效,密鑰簡短,破譯極其困難,由於系統的保密性主要取決於密鑰的安全性。
所以,在公開的計算機網路上安全地傳送和保管密鑰是一個嚴峻的問題。正是由於對稱密碼學中雙方都使用相同的密鑰,因此無法實現數據簽名和不可否認性等功能。
『拾』 異或演算法的密鑰破解,知道密文和明文 ,可以求密鑰嗎已知是異或加密的,寫個原理也好的。
可以。
比如:明文(如1111)⊕密鑰(如1001)得到密文(如0110)
然後拿密文(0110)⊕明文(1111)就得密鑰(1001)