異或加密與解密c語言注釋,異或加密與解密 C語言 注釋

時間 2022-02-09 01:20:09

1樓:

void main(void)

異或一次就加密了,再異或一次又還原了.

2樓:

用vb加密檔案

文字的加密與解密

文字的加密與解密

在vb中,由於隨機數生成器是偽隨機數,所以根據其原理可以用於文字的

加密和解密,根據異或邏輯運算,加密和解密可以是同乙個過程。

加密與解密函式**如下。

'加密與解密函式說明:

' charsting 加密或解密的資料

' key 加密或解密的金鑰

'函式返回值:

' 1. charstring為空時返回"1"

' 2. 加密或解密失敗返回"0"

' 3. 成功則返回加密或解密後的字串

public function edcode$(charstring as string, key as integer)

dim x as single, i as long

dim charnum as integer, randominteger as integer

dim charsingle as string * 1

on local error goto edcodeerror

edcode$ = ""

if len(charstring) = 0 then

edcode$ = "1"

exit function

end if

x = rnd(-key)

for i = 1 to len(charstring)

charsingle = mid$(charstring, i, 1)

charnum = asc(charsingle)

charnum = charnum xor randominteger

charsingle = chr$(charnum)

edcode$ = edcode$ + charsingle

next i

exit function

edcodeerror:

edcode$ = "0"

end function

3樓:匿名使用者

異或運算有乙個特性

若c = a xor b

那麼a = c xor b

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

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

異或加密與解密(c語言)

4樓:匿名使用者

常見的演算法。

#include

viod main()

fclose(in);

fclose(out);}

c語言 異或加密 10

5樓:風若遠去何人留

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

以上是將乙個值,用另乙個值連續異或兩次後的計算過程,可以看到,最終的值與原始值是相同的。這就是異或加密的基礎原理。

6樓:

這個我不會。

給檔案加密,我使用的是超級加密3000。

超級加密3000有超快和最強的檔案、資料夾加密功能、資料保護功能,資料夾、檔案的粉碎刪除以及資料夾偽裝等功能。

7樓:祭揚

常見的演算法。

#include

viod main()

fclose(in);

fclose(out);

}是否可以解決您的問題?

關於用c語言對檔案進行加密和解密 5

8樓:匿名使用者

ch=ch^*(pwd+i); //對讀取的乙個字元,進行異或重點是這,,,,,,就是使用密碼,對原始檔逐byte異或、if(i>9)

密碼也迴圈使用。

~~~~~~~~~~~~

c語言檔案加密和解密

9樓:

沒時間寫**。

簡單的加密大概就是從需要加密的檔案中乙個個讀取字元,然後對該字元進行加密演算法(可以進行異或什麼的),把處理後的字元存入另外乙個人檔案。這其中也就涉及到簡單的檔案操作,不會太難,樓主最好自己寫吧

解密也是乙個思路,就是反向的讀取另外乙個檔案,把加密的演算法倒過來算就行了。

10樓:匿名使用者

樓主還在麼?你是bupt的麼?

c語言 檔案異或加密

11樓:風若遠去何人留

異或加密是所有加密中最容易實施且**量相對精簡的一種加密方式,其原理為任意資料被同乙個值(key)兩次異或後,值不變。

這種特性,使得異或加密演算法的加解密流程是完全相同的,也就是說加解密可以用同乙個函式實現。

一、演算法思路。

依次讀入檔案字元,並用key值對其異或,結果輸入到目標檔案中。

二、演算法描述。

1 開啟原始檔及目標檔案。

2 獲取金鑰值(key)。

3 讀入乙個字元。

4 對其進行異或計算。

5 結果寫入目標檔案。

6 重複3-5直到檔案結尾。

7 關閉檔案。

三、**實現。

為使**簡潔易懂,輸入檔案設定為in.txt, 輸出檔案設定為out.txt, key值設定為0x5c。

假定所有檔案及目錄可讀寫。

#include

#define in "in.txt"

#define out "out.txt"

#define key 0x5c

void scrambler(const char *in, const char *out, unsigned char key)

fclose(i);

fclose(o);

}int main()

但是異或加密也是有缺陷的。最大的缺陷是加密操作是二進位制層面的,獲取到的加密檔案大部分將是不可讀的亂碼。這也是為什麼在開啟檔案的時候要以二進位制方式的原因。

鑑於此,在此不便給出測試樣例及輸入輸出,可自行除錯。

12樓:

這個我不會。

給檔案加密,我使用的是超級加密3000.

超級加密3000有超快和最強的檔案、資料夾加密功能、資料保護功能,資料夾、檔案的粉碎刪除以及資料夾偽裝等功能。

建議您再加密檔案的時候可以試試。

13樓:絕情

常見的演算法。

#include

viod main()

fclose(in);

fclose(out);

}是否可以解決您的問題?

請採納答案,支援我一下。

有關c語言程式設計檔案加密與解密的(會的高手來幫幫忙啊)!!! 20

14樓:天枰和天蠍

#include "memory.h"

#include "stdio.h"

enum ;// encrypt:加密,decrypt:解密

void des_run(char out[8], char in[8], bool type=encrypt);

// 設定金鑰

void des_setkey(const char key[8]);

static void f_func(bool in[32], const bool ki[48]);// f 函式

static void s_func(bool out[32], const bool in[48]);// s 盒代替

// 變換

static void transform(bool *out, bool *in, const char *table, int len);

static void xor(bool *ina, const bool *inb, int len);// 異或

static void rotatel(bool *in, int len, int loop);// 迴圈左移

// 位元組組轉換成位組

static void bytetobit(bool *out, const char *in, int bits);

// 位組轉換成位元組組

static void bittobyte(char *out, const bool *in, int bits);

//置換ip表

const static char ip_table[64] = ;

//逆置換ip-1表

const static char ipr_table[64] = ;

//e位選擇表

static const char e_table[48] = ;

//p換位表

const static char p_table[32] = ;

//pc1選位表

const static char pc1_table[56] = ;

//pc2選位表

const static char pc2_table[48] = ;

//左移位數表

const static char loop_table[16] = ;

// s盒

const static char s_box[8][4][16] = ;

static bool subkey[16][48];// 16圈子金鑰

void des_run(char out[8], char in[8], bool type)

}else

}transform(m, m, ipr_table, 64);

bittobyte(out, m, 64);

}void des_setkey(const char key[8])

}void f_func(bool in[32], const bool ki[48])

void s_func(bool out[32], const bool in[48])

}void transform(bool *out, bool *in, const char *table, int len)

void bittobyte(char *out, const bool *in, int bits)

void main()

,str="hello";

puts("before encrypting");

puts(str);

des_setkey(key);

des_run(str, str, encrypt);

puts("after encrypting");

puts(str);

puts("after decrypting");

des_run(str, str, decrypt);

puts(str);}

用c語言程式設計愷撒密碼加密解密程式

這個我之前寫過 未加密文字 the butcher the baker and the candlestick maker。屠夫 麵包師和蠟燭匠 關鍵金鑰 big bigbigb igb igbig big big bigbigbigbi gbigb 加密文字 upk cczdpks bnf jgl...

p異或q異或r為什麼是命題公式,p與非q與非r為什麼不是命題公式

在數學中,一般把判斷某一件事情的陳述句叫做命題。數學中的定義 公理 公式 性質 法則 定理都是數學命題。這些都是用推理方法判斷命題真假的依據。一般地,在數學中,我們把在一定範圍內可以用語言 符號或式子表達的,可以判斷真假的陳述句叫做命題。數學命題通常由題設和結論兩部分組成 題設是已知事項,結論是由已...

在C 中與是表示且與或,那麼與表示什麼

旅初彤 如果是單獨使用則是進行二進位制數的位與運算,比如二進位制數 100 101 結果就是 100 還可以作為變數的前面表示取變數位址賦值給指標,如 int a 0 int p a a b 或運算,會返回a和b中每個位 位元,即二進位制 最大的值 聽不清啊 在c 中,與 是表示邏輯與 邏輯或,那麼...