當前位置:首頁 » 密碼管理 » c加密類

c加密類

發布時間: 2022-08-07 15:28:02

『壹』 關於c語言加密

'a'的ASC碼是97
'b'的ASC碼是98
'c'的ASC碼是99
... ...
'z'的ASC碼是122

明文和密文相對應
如明文:"abc"
密文:"zyw"

當ch1 = 'a'時,ch2 = 'z'
ch1 - 97 = 97 + 25 - ch2
97 - 97 = 97 + 25 - 122 = 0

當ch1 = 'b'時,ch2 = 'y'
ch1 - 97 = 97 + 25 - ch2
98 - 97 = 97 + 25 - 121 = 1

當ch1 = 'c'時,ch2 = 'w'
ch1 - 97 = 97 + 25 - ch2
99 - 97 = 97 + 25 - 120 = 2

ch1 - 97 = 97 + 25 - ch2這實際上是明文與密文的對應關系,也就是他的演算法

你可以對明文去設定一個對應關系,就可以得到不同的密文

『貳』 c語言電碼加密中加密函數有幾種實現方法

加密方式無窮,隨便舉個例子:
void encrypt(char*s)
{
for(;*s!='\0';s++)
if(*s=='z')
*s='a';
else *s=*s+1;
}

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

『肆』 如何用c語言加密和解密漢字

漢字應該是char類型的數據。你可以用強制類型轉換將其轉換為ASCII碼,加密的時候加上2,然後下次解密的時候減去2,在強制轉換為char類型的數據。代碼大概就像這樣:

int JiaMi(char s)
{
return (int)(s + 2);
}

char JieMi(int code)
{
return (char)(code - 2);
}

『伍』 c語言 數據加密

  1. 什麼是異或演算法

  2. 異或的特點是原始值經過兩次異或某一個數後會變成原來的值,所以有時利用這個特性來進行加密,加密端把數據與一個密鑰進行異或操作,生成密文。接收方收到密文後利用加密方提供的密鑰進行再次異或操作就能得到明文。

常式:

/*以DWORD為單位對文件進行加密,將每個DWORD與0xfcba0000(密鑰)做異或,寫入另一個文件*/

#include<stdio.h>
#include<stdlib.h>
#defineDWORDunsignedlong
#defineBYTEunsignedchar
#definefalse0
#definetrue1
intmain(intargc,char*argv[])
{
FILE*hSource;
FILE*hDestination;

DWORDdwKey=0xfcba0000;
char*pbBuffer;
DWORDdwBufferLen=sizeof(DWORD);
DWORDdwCount;
DWORDdwData;
if(argv[1]==0||argv[2]==0)
{
printf("missingargument! ");
returnfalse;
}
char*szSource=argv[1];
char*szDestination=argv[2];

hSource=fopen(szSource,"rb");//打開源文件.
hDestination=fopen(szDestination,"wb");//打開目標文件
if(hSource==NULL){printf("openSourceFileerror!");returnfalse;}
if(hDestination==NULL){printf("openDestinationFileerror!");returnfalse;}

//分配緩沖區
pbBuffer=(char*)malloc(dwBufferLen);

do{
//從源文件中讀出dwBlockLen個位元組
dwCount=fread(pbBuffer,1,dwBufferLen,hSource);
//加密數據
dwData=*(DWORD*)pbBuffer;//char*TOdword
dwData^=dwKey;//xoroperation
pbBuffer=(char*)&dwData;
//將加密過的數據寫入目標文件
fwrite(pbBuffer,1,dwCount,hDestination);
}while(!feof(hSource));

//關閉文件、釋放內存
fclose(hSource);
fclose(hDestination);

printf("%sisencryptedto%s ",szSource,szDestination);
return0;
}

熱點內容
常見linux問題 發布:2024-05-20 17:43:54 瀏覽:162
java架構師之路 發布:2024-05-20 17:23:43 瀏覽:55
貪心演算法作業調度 發布:2024-05-20 17:23:42 瀏覽:714
簡述虛擬存儲技術的工作原理 發布:2024-05-20 17:23:31 瀏覽:385
安卓聯盟手游從哪裡下載 發布:2024-05-20 17:11:39 瀏覽:316
抖音賬號密碼不知道是多少怎麼看 發布:2024-05-20 16:57:26 瀏覽:156
python的init函數 發布:2024-05-20 16:23:46 瀏覽:715
安卓手機連拍限制張數怎麼辦 發布:2024-05-20 16:13:07 瀏覽:289
資料庫精品課程網站 發布:2024-05-20 15:56:06 瀏覽:355
常用的外部存儲器包括 發布:2024-05-20 15:43:19 瀏覽:662