導航:首頁 > 文檔加密 > 異或8加密

異或8加密

發布時間:2022-04-16 12:38:03

① 異或加密與解密(C語言)注釋

異或運算有一個特性


c = a xor b
那麼
a = c xor b

根據這樣的特性,你有一個信息a,然後你產生一個密碼b,把它和a異或運算之後就變成了c。這就是一種加密,解密的時候,把c重新和b異或運算,就變回了a。

順帶說一下,異或是很弱的加密方法,很容易被破解的。

② 關於java中的異或運算符實現加密和解密的問題

String sdd= new String(bt,0,bt.length);
// bt是數組, 0 表示從第一個開始, 即對應 bt[0]
這句意義就是 將 bt 數組的內容轉化成 string ;

③ 一個基於異或的加密演算法

大哥……你連流程圖都畫出來了……代碼還不懂寫……另外這個也不難吧~~就異或操作而已…………最簡單的加密的了,小數那裡你把它擴大再提取出來即可
……實在不行再幫你看看~~~~最好自己先嘗試做~
==================================================================
#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了,意義不太大

④ 誰可以給我介紹下所謂的8位密匙進行異或者操作

就是按位操作一下,密匙既常數+操作

解密為常數+反向操作

⑤ 如何利用異或運算進行簡單加密解密

利用「^」異或運算對字元串進行加密
思路: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!

⑥ 異或加密介紹和原理

最簡單的異或加密解密,特點是加密解密演算法相同:下面的可以直接測試。
private void button1_Click(object sender, EventArgs e)
{
byte key = 123;
Text = encryptDecryptStr(textBox1.Text, key);
}

private string encryptDecryptStr(string p, byte key)
{
byte[] bs = Encoding.Default.GetBytes(p);
for (int i = 0; i < bs.Length; i++)
{
bs[i] = (byte)(bs[i] ^ key);
}
return Encoding.Default.GetString(bs);
}

private void button2_Click(object sender, EventArgs e)
{
byte key = 123;
button2.Text = encryptDecryptStr(Text, key);
} 上面是一個C#的異或加密演算法

⑦ C語言 異或加密

C語言異或加密實現的原理為,將任意值,與相同值兩次異或後,結果與原值相同。所以可以通過將源數據與一個固定的值(秘鑰key)異或後,得到密文,然後將密文再次與秘鑰異或,得到原文。這樣就實現了異或加密及解密。
C語言中的異或是一種按位操作的計算,其計算原理為,操作數對應位上的值相同,則結果位上值為0,否則為1.異或的運算符號為^,於是真值表如下:
0^0=0
0^1=1
1^0=1
1^1=0
這樣區分源數據和秘鑰值,有如下四種可能:
0^0=0
0^0=0
0^1=1
1^1=0
1^0=1
1^0=1
1^1=0
0^1=1
以上是將一個值,用另一個值連續異或兩次後的計算過程,可以看到,最終的值與原始值是相同的。這就是異或加密的基礎原理。

⑧ 設計一種很難被破解的異或加密方法

不會哦。比如我有一個大小為1000位元組的文本文件,我先產生了4個隨機數,100,4,200,5
然後先取文件100位元組處的數據然後與下一個位元組也就是101位置的數據異或,然後取加密後的數據繼續與下個位元組XOR,到文件尾後轉到文件頭繼續,直到完全把整個文件異或加密4遍,也就是4000次XOR,同樣再取文件200位元組偏移處數據進行5000次XOR,解密者只需知道4個隨機數然後按步驟反過來XOR就還原為原文本文件,我想知道不知道4個隨機數的情況下怎樣破解,窮舉嗎,難度大不大,有什麼更好的異或加密方案,如用一張jpg照

⑨ 什麼是異或加密

異或的特點是原始值經過兩次異或某一個數後會變成原來的值,所以有時利用這個特性來進行加密,加密端把數據與一個密鑰進行異或操作,生成密文。接收方收到密文後利用加密方提供的密鑰進行再次異或操作就能得到明文。loop是匯編語言中的循環指令。它對cx進行減1,如果不為0則跳到循環首部繼續執行循環體。如果為0,執行loop的下一條指令。

⑩ C語言異或加密這個編程怎麼寫

字元A 異或 字元C 在c語言里這樣寫:
char val = 'A' ^ 'C';

閱讀全文

與異或8加密相關的資料

熱點內容
小米定位伺服器地址 瀏覽:612
有什麼好的學畫app 瀏覽:882
5線4相步進電機單片機控制 瀏覽:293
linux重啟php命令行 瀏覽:999
加密軟體gif 瀏覽:761
取字元串的前幾位java 瀏覽:312
車銑復合雕花編程教學 瀏覽:904
android圖片等比例縮放 瀏覽:355
javaset使用方法 瀏覽:339
modbus轉opc源碼 瀏覽:321
csharp串口編程 瀏覽:544
山東雙線伺服器雲伺服器 瀏覽:865
帶動程序員技術氛圍的活動有哪些 瀏覽:551
華為捐贈源碼 瀏覽:591
ccs編譯程序一直彈debug 瀏覽:47
安卓手機如何調白圖片 瀏覽:355
什麼牌子的安卓平板最好用 瀏覽:173
keil編譯顯示目標沒有建立 瀏覽:793
安卓收銀機如何安裝列印機驅動 瀏覽:821
電動車什麼app上買 瀏覽:531