導航:首頁 > 文檔加密 > 加密c語言

加密c語言

發布時間:2022-01-29 23:13:16

⑴ 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;
}

⑵ C語言怎麼加密字元

#include<stdio.h>
#include<string.h>
intmain()
{
charstr[]="00000",str2[]="00000",*p=str,*p2=str2;
printf("輸入5個字母:");
while(*p!=0)
{
scanf("%c",p);
if(*p==' ')
continue;
if(*p<'A'||(*p>'Z'&&*p<'a')||*p>'z')//輸入驗證,必須是字母
{
printf("只能輸入字母,請重新輸入 ");
p=str;
p2=str2;
fflush(stdin);//輸入有錯重新輸入前清空緩沖區。fflush屬於c擴展函數,正常使用沒問題,如需在linuxggc上使用,考慮多次調用getchar函數來清空
}
else
{
*p2=(*p)+4;
if(*p2>90&&*p2<97)//大寫字母加4,最大位不超出
*p2='A'+(*p2-90)-1;
if(*p2>122)//小寫字母加4,最大位不超出
*p2='a'+(*p2-122)-1;
p2++;
p++;
}
}

printf("原字元串為:%s 加密後的字元串為:%s ",str,str2);
return0;
}

⑶ c語言的簡單加密

#include <stdio.h>#include <math.h>
int main()
{
char a[10];
int i=0;
while(getchar()!='\n')
{
a[i++]=getchar(); //錯誤在這里,上一句while(getchar()!='\n'),如果讀入字元不是回車
} //那麼再讀入一個字元,賦給數組里的元素。也就是說,每兩個字元
a[i]='\n'; //能讀入第二個字元。如果讀入奇數個字元,則無法結束程序。
i=0;
do
{
printf("%c",a[i++]+4);
}
while(a[i]!='\n');
}

修改如下,運行OK:
#include <stdio.h
int main()
{
char a;
int i=0;
while((a=getchar())!='\n')
{
printf("%c",a+4);
}
printf("\n");
}

⑷ c語言加密演算法

看你催就倉促寫了個,自我感覺寫的不是很好,但是能用了。數據只能是大寫字母組成的字元串。
加密的時候,輸入Y,然後輸入要加密的文本(大寫字母)
解密的時候,輸入N,然後輸入一個整數n表示密文的個數,然後n個整數表示加密時候得到的密文。
/*RSA algorithm */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MM 7081
#define KK 1789
#define PHIM 6912
#define PP 85
typedef char strtype[10000];
int len;
long nume[10000];
int change[126];
char antichange[37];

void initialize()
{ int i;
char c;
for (i = 11, c = 'A'; c <= 'Z'; c ++, i ++)
{ change[c] = i;
antichange[i] = c;
}
}
void changetonum(strtype str)
{ int l = strlen(str), i;
len = 0;
memset(nume, 0, sizeof(nume));
for (i = 0; i < l; i ++)
{ nume[len] = nume[len] * 100 + change[str[i]];
if (i % 2 == 1) len ++;
}
if (i % 2 != 0) len ++;
}
long binamod(long numb, long k)
{ if (k == 0) return 1;
long curr = binamod (numb, k / 2);
if (k % 2 == 0)
return curr * curr % MM;
else return (curr * curr) % MM * numb % MM;
}
long encode(long numb)
{ return binamod(numb, KK);
}
long decode(long numb)
{ return binamod(numb, PP);
}
main()
{ strtype str;
int i, a1, a2;
long curr;
initialize();
puts("Input 'Y' if encoding, otherwise input 'N':");
gets(str);
if (str[0] == 'Y')
{ gets(str);
changetonum(str);
printf("encoded: ");
for (i = 0; i < len; i ++)
{ if (i) putchar('-');
printf(" %ld ", encode(nume[i]));
}
putchar('\n');
}
else
{ scanf("%d", &len);
for (i = 0; i < len; i ++)
{ scanf("%ld", &curr);
curr = decode(curr);
a1 = curr / 100;
a2 = curr % 100;
printf("decoded: ");
if (a1 != 0) putchar(antichange[a1]);
if (a2 != 0) putchar(antichange[a2]);
}
putchar('\n');
}
putchar('\n');
system("PAUSE");
return 0;
}
測試:
輸入:
Y
FERMAT
輸出:
encoded: 5192 - 2604 - 4222
輸入
N
3 5192 2604 4222
輸出
decoded: FERMAT

⑸ 簡單的C語言加密程序

#include<stdio.h>
#include<stdlib.h>
main()
{
int key;
char ch;
printf("\n請輸入密鑰:");
scanf("%d",&key);

printf("得到對應明文如下:");
while((ch=getchar())!='\r')
(ch+key)>122?putchar(ch-122+33+key):
((ch+key)<33?putchar(ch+122+key):putchar(ch+key));
}

輸入輸出如下:

請輸入密鑰:20addse
得到對應明文如下:uxx.y

你先輸入一個任意的整數,如20,然後在鍵盤上輸入一段任意的字元如addse
按回車鍵結束,就會得到結果 如:uxx.y

下面是另一組輸入輸出:

請輸入密鑰:35asjRYIRER!@#$^^*&
得到對應明文如下:+=4u#luhuDcFG((MI-
具體是如何加密,你應該能看懂,就是用一個三目運算符 ? :控制。

⑹ C語言 簡單對字母進行加密

1、在我們的編輯頁面輸入以下代碼。

⑺ c語言編寫的程序,在輸入密碼時,如何加密

前言:當今社會是一個信息社會,你的個人信息和聊天記錄極有可能被別有用心的人時時刻刻監視著,那麼你想不想實現專屬於兩個人或一個小圈子的人在社交軟體上的交流不被任何其他人讀懂呢?

下面就給大家提供一個原理極其簡單程序極其容易實現的C語言文字加密小程序的實現演算法。

在鍵盤上錄入了"今天晚上我不回家吃飯了",將這串字元的ASCLL碼全部加1,列印出來是這樣的"掘晚晤市嫌臣假接湊負綠"。怎麼樣,哈哈哈,是不是看完後丈二和尚摸不著頭腦?

所以,用這種演算法實現對漢字的加密和翻譯絕對隱蔽!漢字在計算機中的編碼比較復雜,一個漢字在Windows 10系統下的CodeBlocks編譯器里佔2個字元的位置,我記得我有做過測試,在Cent OS Linux系統下佔3個字元的位置。

然而不管一個漢字占幾個字元的位置,對每個字元的ASCLL碼做加減乘除的運算和逆運算就可以實現對文字的加密和翻譯。

下面向大家展示一下源代碼(加密演算法為將所有字元的ASCLL碼加1,翻譯演算法為將所有字元的ASCLL碼減1):

頭文件部分:

主函數部分:

下面向大家展示一下加密與翻譯的效果:

思考與提高:僅僅將所有字元的ASCLL碼加1就實現對文字信息的加密了,會不會很容易被破譯呢?請恕我不是密碼學專家,這一點我無法回答,但是直觀感覺這樣加密確實有點簡單。

那麼我們就可以對字元進行多種更為復雜的處理,比如給所有字元加上一個正負變換的數列、給所有字元加上斐波那契數列等。總之,直觀感覺就是越復雜越不容易被破譯。

下面向大家展示一下給所有字元加上一個正負變換的數列的加密演算法的源代碼:

頭文件部分:

主函數部分主要是用來調試的,與上面那個簡單加密演算法的主函數部分相同。

下面向大家展示一下使用這種復雜加密演算法加密與翻譯的效果:

用了加密程序後,畫風是這樣的:

⑻ C語言如何進行字元加密

進行字元加密是很多種的。
數據加密的基本過程就是對原來為明文的文件或數據按某種演算法進行處理,使其成為不可讀的一段代碼為「密文」,使其只能在輸入相應的密鑰之後才能顯示出原容,通過這樣的途徑來達到保護數據不被非法人竊取、閱讀的目的。 該過程的逆過程為解密,即將該編碼信息轉化為其原來數據的過程。

⑼ c語言實現密碼加密

unsignedchar*encrypt(unsignedchar*psw,intenc){
intsum=0,i;
if(enc){
for(i=0;i<6;i++){
psw[i]-=15;
sum+=psw[i];
}
psw[6]=(unsignedchar)sum;
psw[7]=0;
}
else{
for(i=0;i<6;i++){
sum+=psw[i];
psw[i]+=15;
}
if((unsignedchar)sum!=psw[6]){
printf("Badpassword ");
psw[0]=0;
returnpsw;
}
else{
psw[6]=0;
}
}
for(i=0;i<3;i++){
unsignedchart=psw[i];
psw[i]=psw[5-i];
psw[5-i]=t;
}
returnpsw;
}

intmain()
{
unsignedcharpsw[128];
scanf("%s",psw);
printf("encodeto:%s ",encrypt(psw,1));
printf("decodeto:%s ",encrypt(psw,0));
return0;
}

⑽ C語言對字元進行加密

if(e>='A'&&e<='W')//
e+=3;
elseif(e>='X'&&e<='Z')
e-=23;
else
{
...//donotencryptordosomethingelse
}

閱讀全文

與加密c語言相關的資料

熱點內容
半夜解壓有什麼壞處 瀏覽:424
linux代理命令 瀏覽:637
調用tasking的編譯器編譯 瀏覽:292
青檸app是什麼 瀏覽:866
linuxapachephp56 瀏覽:395
安卓手機如何打開eng文件 瀏覽:22
看拉丁電視都用什麼app好 瀏覽:778
什麼是哲學pdf 瀏覽:509
hdfs的三個下載命令 瀏覽:525
java常用的排序演算法 瀏覽:358
51單片機連接adc 瀏覽:860
python命名變數報錯 瀏覽:122
安卓手機如何換windows系統 瀏覽:613
python中的類是什麼 瀏覽:631
我的英雄學院用哪個app可以看 瀏覽:36
excel插入選項卡對象命令 瀏覽:695
python字元全排列 瀏覽:507
824頁大瓜文件pdf 瀏覽:222
朔州ios源碼 瀏覽:251
演算法邏輯電路 瀏覽:943