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語言 數據加密
什麼是異或演算法
異或的特點是原始值經過兩次異或某一個數後會變成原來的值,所以有時利用這個特性來進行加密,加密端把數據與一個密鑰進行異或操作,生成密文。接收方收到密文後利用加密方提供的密鑰進行再次異或操作就能得到明文。
常式:
/*以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;
}