c語言預編譯處理進行數據加密
/* Note:Your choice is C IDE */
#include "stdio.h"
#define len 8
void func(int *p) /*加密*/
{
int i;
for(i=0;i<len;i++)
p[i]=(p[i]+5)%10;
}
int main()
{
int i,j,num[len+1];
for(i=0;i<len;i++)
{
scanf("%d",&num[i]);
if(num[i]<0||num[i]>9){printf("error\n");
return(0);}
}
for(i=0;i<(len-2)/2;i++) /*數據倒序*/
{
j=num[i];
num[i]=num[len-1-i];
num[len-1-i]=j;
}
func(num);
j=num[0]; /*第一位和最後一位交換*/
num[0]=num[len-1];
num[len-1]=j;
for(i=0;i<len;i++)
printf("%d",num[i]);
return 0;
}
㈡ c語言編寫的程序,在輸入密碼時,如何加密
加密和解密演算法是程序編制中的重要一環。試想,如果我們平時使用的騰訊QQ、支付寶支付密碼、今日頭條賬號密碼那麼輕易就被別人盜取的話,很多不可以預料的事情就會發生!
在現實生活中,我們遇到過太多QQ密碼被盜取的情況,有的朋友QQ被盜之後,騙子利用朋友間信任騙取錢財的事情屢見不鮮。支付寶也曾出現過支付寶賬戶被惡意盜取的事件,對用戶利益造成了嚴重損害!這些在技術上都指向了同一相關問題:軟體加密演算法的強壯程度。今天,小編利用C語言來簡單實現一種加密方法。下面是源代碼。
需要說明:程序利用了ascii碼值的按照一定規律變換實現加密,對於解密過程,則是加密的逆過程。下面是程序的運行結果。
4190閱讀
搜索
編程免費課程300節
初學編程100個代碼
java自學一般要學多久
5秒破解excel密碼
python必背100源代碼
40歲零基礎學編程
㈢ 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;
}
㈣ C語言如何進行字元加密
進行字元加密是很多種的。
數據加密的基本過程就是對原來為明文的文件或數據按某種演算法進行處理,使其成為不可讀的一段代碼為「密文」,使其只能在輸入相應的密鑰之後才能顯示出原容,通過這樣的途徑來達到保護數據不被非法人竊取、閱讀的目的。 該過程的逆過程為解密,即將該編碼信息轉化為其原來數據的過程。
㈤ 用C語言設計程序進行文件的加密
這里採用加密函數是:
如果是數組,則不進行加密;
如果是字元,首先將a變成b,b變c,....依次類推,
然後再與加密字元異或
方法/步驟
首先打開VC++6.0
㈥ c語言編寫程序,並加密數據
#include<stdio.h>
void passwordnum(long a);
int main(void)
{
long num;
while(!scanf("%d",&num))
{
while(getchar()!='\n'); //把數字後面的不純凈輸入吸收掉
printf("Input Error! please retry anain.\n");
}
passwordnum(num);
printf("\n");
return 0;
}
void passwordnum(long a)
{
if(a>0)
{
passwordnum(a/10);
printf("%d",(a+2)%10);
}
else if(a<0)
{
printf("-");
a=-a;
passwordnum(a);
}
}
㈦ 如何用C語言對文件進行加密和解密
對於加密要求不高的完全可以自己定義規則來進行加密。這種加密是很簡單很自由的,例如你在存文件的時候可以將文件中的每個字元都加上一個數,然後讀取該文件的時候再每個字元相應地減去那個數,即可實現就簡單的加密,這樣你儲存的文件看上去就是亂碼了。只是這個規則太簡單,規則你可以自己定,加密與解密對著來就行了。
下面程序用異或操作對文件進行加密和解密
/****************** 設計思路 ******************/
// 根據用戶輸入的加密/機密密碼,
// 每次都拿原文件和密碼等長度的一個字元串和密碼
// 對應元素異或進行加密/解密
// 另外因為是用異或方法,所以加密和解密就是同一個程序
// 即按照同樣的加密即是對文件的解密
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
#include <stdlib.h>
char filename[256]; // 原文件
char password[256]; // 加密/解密密碼
const char filenametemp[] = "temp15435255435325432543.temp"; // 加密/解密中間文件
void inputpass(char *pass); //密碼輸入以"******"顯示
void main() {
FILE *fp; // 加密/解密的文件
FILE *fptemp; // 加密/解密過程臨時文件
int pwdlen; // 密碼長度
int i = 0; // 計數器
char ch = 0; // 讀入的字元
printf("請輸入要加密/解密的文件名(全路徑名): \n");
gets(filename);
if( (fp = fopen(filename, "rb")) == NULL) {
printf("找不到文件 %s\n", filename);
exit(1);
} // if
printf("請輸入要加密/解密的密碼: \n");
inputpass(password);
pwdlen = strlen(password);
if(pwdlen == 0) {
printf("密碼不能為空,加密/解密失敗\n");
exit(1);
} // if
fptemp = fopen(filenametemp, "wb"); // 打開中間文件
while(1) {
ch = fgetc(fp);// 從原文件讀入一個字元
if(feof(fp)) { // 已經讀到文件尾
break; // 退出循環
}
ch ^= password[i++]; // 對原字元和密碼進行異或操作
fputc(ch, fptemp); // 將異或結果寫入中間文件
if(i == pwdlen) { // 使得原文件每和密碼長度相同的固定長度異或加密
i = 0;
}
} // while
fclose(fp); // 關閉打開原文件
fclose(fptemp); // 關閉打開中間文件
remove(filename); // 刪除原文件
rename(filenametemp, filename); // 將中間文件重命名為原文件
printf("加密/解密成功\n"); // 至此加密/解密成功
}
// 密碼輸入以"******"顯示
void inputpass(char *pass) {
int i = 0;
char c;
while(isprint(c = getch())) {
pass[i++] = c;
// printf("*");
}
pass[i] = '\0';
printf("\n");
}
㈧ 用C語言實現文件的加密與解密的思路是什麼
設置加密演算法,如將文件以二進制打開,每個位元組加(或減、乘、除、模等等)一個數,設置類似的一個加密演算法。將該文件重新生成一次。完成加密過程。解密過程既是對加密過程的逆運算,保證將沒個位元組還原成為文件原貌即可。另外,不一定針對每個位元組進行運算,加密的位元組仍然可以通過演算法確定,例如,奇數位元組、偶數位元組等進行加密操作。
㈨ C語言編譯加密問題
源程序中如果寫的連續地址的字元串, 即時編譯出二進制,其實它仍然是連續的字元串表示,你用文本方式打開,自然能看見文本字元串的。
這里給2個簡單點的辦法來解決這個問題:
方法一:字元串打亂順序賦值
在代碼中,你原有代碼是 char str[] = "abcd";
改為:
str[0]='a';
str[2]='c';
str[1]='b';
str[3]='d';
這樣編譯之後,二進制文件中,它不會是連續的字元串,也就看不到了, str只會在運行時在內存中才構造出字元串。
基於這種思路,也可以各種姿勢復制,或者小范圍採用strcpy,strcat之類的。
方法二:
寫兩個程序,一個負責把字元串打亂成一堆亂碼並以16進制或者base64輸出為可見字元串(加密), 第二個程序直接取加密後的可見字元串,又使用解密代碼轉回去。
這種加解密代碼其實不難, 比如
加密:把每個字元 都循環加 10,然後以16進制輸出。
解密:先把16進制字元串,轉成數組,然後循環減10。
㈩ 如何用C語言的宏實現數據加密
宏是一種C語言中的編碼精簡器,基本上有這么幾個作用 1. 預編譯和編譯時用到的常量 2. 某個子過程用函數調用寫時間開銷太大 3. 編譯控制
宏本身是不能實現你的加密數據功能的,如加密個文件、加密某個內存存儲、或加密從網路傳來的數據,它沒這個功能。但是用宏可以把程序的源文件寫的讓別人「看不懂」。
要用宏加密,只能是用宏調用加密函數如Crypto++中的函數進行加密。