當前位置:首頁 » 密碼管理 » 加密異或

加密異或

發布時間: 2022-07-13 07:54:18

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
以上是將一個值,用另一個值連續異或兩次後的計算過程,可以看到,最終的值與原始值是相同的。這就是異或加密的基礎原理。

python 寫異或加密

from random import seed,randint

str_in=input('請輸入一個字元串:')
you_seed=input('請輸入密碼:')
you_seed=int(you_seed)

#lock
def my_lock(lock_str,lock_seed):
seed(lock_seed)
li_out=[]
for i in lock_str:
li_out.append(chr(ord(i)^randint(0,65535)))
return ''.join(li_out)
my_lock_str=my_lock(str_in,you_seed)
print('原字元串:',str_in)
print('加密字元串:',my_lock_str)
print('還原後字元串:',my_lock(my_lock_str,you_seed))
input()
#python 3.4

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

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

㈣ 什麼是異或加密

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

㈤ 異或加密介紹和原理

最簡單的異或加密解密,特點是加密解密演算法相同:下面的可以直接測試。
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的加密處理,對於每個字元都和A做異或,A是什麼

A是一個常數
異或的一個性質是

B
=
C
xor
A
那麼
C
=
B
xor
A
也就是它的演算法是可逆的,所以一可用於加密演算法中

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

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

㈧ 異或加密演算法中對於異或的數有要求嗎

異或的數是秘鑰,沒有任何特殊要求,但是你將來解密也要用它,否則就亂了。

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

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

熱點內容
定期預演算法的 發布:2025-05-14 14:24:08 瀏覽:893
interbase資料庫 發布:2025-05-14 13:49:50 瀏覽:691
微商海報源碼 發布:2025-05-14 13:49:42 瀏覽:347
分布式緩存部署步驟 發布:2025-05-14 13:24:51 瀏覽:611
php獲取上一月 發布:2025-05-14 13:22:52 瀏覽:90
購買雲伺服器並搭建自己網站 發布:2025-05-14 13:20:31 瀏覽:689
sqlserver建立視圖 發布:2025-05-14 13:11:56 瀏覽:485
搭建httpsgit伺服器搭建 發布:2025-05-14 13:09:47 瀏覽:256
新電腦拿回來我該怎麼配置 發布:2025-05-14 13:09:45 瀏覽:241
視頻伺服器新建ftp用戶 發布:2025-05-14 13:03:09 瀏覽:226