當前位置:首頁 » 編程語言 » 加密c語言數字
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

加密c語言數字

發布時間: 2023-06-14 06:48:38

A. 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;
}

B. C語言 加密演算法

#include<stdio.h>

#include<string.h>

#defineMAX_LEN1024

#defineMAX_KEY_LEN10

/*key必須是1-9之間的數字*/

/*擁有K個字元的Key,包含且僅包含1-K*/

intCheckKey(char*key)

{

inti,check[MAX_KEY_LEN]={0};

intmax=strlen(key);

intkeyVal;

for(i=0;i<max;i++)

{

keyVal=key[i]-'0';

if(keyVal>max||keyVal<1)

return0;

if(check[keyVal]==1)

return0;

else

check[keyVal]=1;

}

return1;

}

intEncrypt(char*word,char*key,char*secretWord)

{

inti,start;

intnLenWord=strlen(word);

intnLenKey=strlen(key);

intindex[MAX_KEY_LEN];

if(nLenWord%nLenKey!=0)

{

printf("明文的位數不是密鑰位數的整數倍! ");

return0;

}

for(i=0;i<nLenKey;i++)

{

index[i]=key[i]-'0'-1;

}

/*START關鍵代碼*/

start=0;

while(start<nLenWord)

{

for(i=0;i<nLenKey;i++)

{

secretWord[start+i]=word[start+index[i]];

}

start+=nLenKey;

}

secretWord[nLenWord]='';

/*END關鍵代碼*/

return1;

}

intmain()

{

charword[MAX_LEN];

charkey[MAX_KEY_LEN];

charsecretWord[MAX_LEN];

printf("請輸入明文:");

scanf("%1024s",word);

printf("請輸入密鑰:");

scanf("%10s",key);

if(!CheckKey(key))

{

printf("密鑰輸入錯誤! ");

exit(-1);

}

if(Encrypt(word,key,secretWord))

printf("密文是:%s ",secretWord);

return0;

}

C. 求C語言程序設計 數據加密詳解~!!!

#include<stdio.h>
#define
N
8
void
main()
{
int
code,count,i,temp;
int
key[N];
printf("請輸入密碼:");
scanf("%d",&code);
//各位交換
i=0;
count=0;
while(code!=0)
{
key[i]=code%10;
code
/=
10;
i++;
count++;
}
//各位
加5,並對其取余
for(i=0;i<count;i++)
{
key[i]
+=
5;
key[i]
%=
10;
}
//數字第一位與最後一位互換
temp
=
key[0];
key[0]
=
key[count-1];
key[count-1]
=
temp;
for(i=0;i<count;i++)
{
printf("%d
",key[i]);
}
}
//暈...你是北大青鳥的吧..我昨天剛做了這個項目.剛好發給你了..

D. 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

E. C語言數字加密

#include
void
main()
{
int
a[5];
/*
存儲各位上的數字
*/
int
num,
temp,
encripy;
/*
num是要輸入的數,temp是交換時用來存儲臨時值,encripy是加密後的數據
*/
int
i;
do
{
printf("please
input
the
number:");
scanf("%d",&num);
if(!(num/10000
!=0
&&
num/100000==0))
printf("data
error!\n");
}while(!(num/10000
!=0
&&
num/100000==0));
a[0]
=
num/10000%10;
/*
求各位上的數字
*/
a[1]
=
num/1000%10;
a[2]
=
num/100%10;
/*
百位上的數字
*/
a[3]
=
num/10%10;
/*
十位上的數字
*/
a[4]
=
num%10;
/*
個位上的數字
*/
for(i
=
0;
i
<
5;
++i)
/*
開始加密
*/
a[i]
=
(a[i]
+
8)%10;
temp
=
a[0];
/*
交換位置開始
*/
a[0]
=
a[3];
a[3]
=
temp;
temp
=
a[1];
a[1]
=
a[2];
a[2]
=
temp;
/*
交換位置結束同時加密結束
*/
encripy
=
a[0]*10000
+
a[1]*1000
+
a[2]*100
+
a[3]*10
+
a[4];
/*
加密後的數據
*/
printf("\nthe
scourse
number:
%d\n",
num);
/*
輸出原數據
*/
printf("\nencripy
the
number:
%d\n\n",
encripy);
/*
輸出加密後的數據
*/
}
在vc6.0成功運行,希望對你有幫助!

F. C語言 加密數字為字母

#include<stdio.h>

intmain()
{
inta;
scanf("%d",&a);
do
{
putchar('a'+a%10);
a/=10;
}while(a);
return0;
}

G. c語言數字後移加密

#include<stdio.h>

intmain()
{
inta,b;
scanf("%d",&a);
b=0;
do
{
b=b*10+(a%10+2)%10;
a/=10;
}while(a);
for(a=0;b;b/=10)
{
a=a*10+b%10;
}
printf("%d ",a);
return0;
}