Ⅰ c語言編寫的程序,在輸入密碼時,如何加密
加密和解密演算法是程序編制中的重要一環。試想,如果我們平時使用的騰訊QQ、支付寶支付密碼、今日頭條賬號密碼那麼輕易就被別人盜取的話,很多不可以預料的事情就會發生!
在現實生活中,我們遇到過太多QQ密碼被盜取的情況,有的朋友QQ被盜之後,騙子利用朋友間信任騙取錢財的事情屢見不鮮。支付寶也曾出現過支付寶賬戶被惡意盜取的事件,對用戶利益造成了嚴重損害!這些在技術上都指向了同一相關問題:軟體加密演算法的強壯程度。今天,小編利用C語言來簡單實現一種加密方法。下面是源代碼。
需要說明:程序利用了ascii碼值的按照一定規律變換實現加密,對於解密過程,則是加密的逆過程。下面是程序的運行結果。
4190閱讀
搜索
編程免費課程300節
初學編程100個代碼
java自學一般要學多久
5秒破解excel密碼
python必背100源代碼
40歲零基礎學編程
Ⅱ 簡單的C語言加密程序
#include
#include
main()
{
intkey;
charch;
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語言 文件加密
告訴你個最簡單的方案:用CreateProcess調用winrar.exe,再給個壓縮密碼就OK。winrar的安裝文檔里就有各種參數的設置方法。
不然的話,你也可以去MSDN上翻翻WIN32的加密函數。
再不行,你也可以用最簡單的異或法自己加密。
Ⅳ C語言如何進行字元加密
進行字元加密是很多種的。
數據加密的基本過程就是對原來為明文的文件或數據按某種演算法進行處理,使其成為不可讀的一段代碼為「密文」,使其只能在輸入相應的密鑰之後才能顯示出原容,通過這樣的途徑來達到保護數據不被非法人竊取、閱讀的目的。 該過程的逆過程為解密,即將該編碼信息轉化為其原來數據的過程。
Ⅳ C語言怎樣給文件加密
這個加密有簡單的,有復雜的。要是簡單的就直接選擇文件中的某些欄位,將某些欄位進行1定的轉換或在文件中位置的變更等。也能夠將其中的每一個2進制讀取,然落後行1定的運算後再存儲,到達加密的效果。最後再依照1定的逆操作,恢復原來的文件,到達解密的效果。大致思路就是這樣的,具體就看你的加解密的演算法復雜與否了!舉個非常簡單的例子,可以將讀取的某個數與1個你自己知道的固定的數做「異或」運算,解密的時候,你再次和這個數做「異或」運算,就能夠恢復原來的那個數。這就是1種簡單的加密演算法,看似簡單,不過卻比較經常使用,由於,參與異或運算的值只有你自己知道。
Ⅵ 編寫函數完成字元串的加密與解密(c語言)
C語言代碼和運行結果如下:
輸出符合示例,加解密均正確,望採納~
附源碼鏈接:字元串加解密
Ⅶ RSA加密解密演算法示例(C語言)
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <time.h>
#define PRIME_MAX 200 // 生成素數范圍
#define EXPONENT_MAX 200 // 生成指數e范圍
#define Element_Max 127 // 加密單元的最大值,這里為一個char, 即1Byte
char str_read[100]="hello world !"; // 待加密的原文
int str_encrypt[100]; // 加密後的內容
char str_decrypt[100]; // 解密出來的內容
int str_read_len; // str_read 的長度
int prime1, prime2; // 隨機生成的兩個質數
int mod, eular; // 模數和歐拉數
int pubKey, priKey; // 公鑰指數和私鑰指數
// 生成隨機素數,實際應用中,這兩個質數越大,就越難破解。
int randPrime()
{
int prime, prime2, i;
next:
prime = rand() % PRIME_MAX; // 隨機產生數
if (prime <= 1) goto next; // 不是質數,生成下一個隨機數
if (prime == 2 || prime == 3) return prime;
prime2 = prime / 2; // prime>=4, prime2 的平方必定大於 prime , 因此只檢查小於等於prime2的數
for (i = 2; i <= prime2; i++) // 判斷是否為素數
{
if (i * i > prime) return prime;
if (prime % i == 0) goto next; // 不是質數,生成下一個隨機數
}
}
// 歐幾里德演算法,判斷a,b互質
int gcd(int a, int b)
{
int temp;
while (b != 0) {
temp = b;
b = a % b;
a = temp;
}
return a;
}
//生成公鑰指數,條件是 1< e < 歐拉數,且與歐拉數互質。
int randExponent()
{
int e;
while (1)
{
e = rand() % eular; if (e < EXPONENT_MAX) break;
}
while (1)
{
if (gcd(e, eular) == 1) return e; e = (e + 1) % eular; if (e == 0 || e > EXPONENT_MAX) e = 2;
}
}
//生成私鑰指數
int inverse()
{
int d, x;
while (1)
{
d = rand() % eular;
x = pubKey * d % eular;
if (x == 1)
{
return d;
}
}
}
//加密函數
void jiami()
{
str_read_len = strlen(str_read); //從參數表示的地址往後找,找到第一個'\0',即串尾。計算'\0'至首地址的「距離」,即隔了幾個字元,從而得出長度。
printf("密文是:");
for (int i = 0; i < str_read_len; i++)
{
int C = 1; int a = str_read[i], b = a % mod;
for (int j = 0; j < pubKey; j++) //實現加密
{
C = (C*b) % mod;
}
str_encrypt[i] = C;
printf("%d ", str_encrypt[i]);
}
printf("\n");
}
//解密函數
void jiemi()
{
int i=0; for (i = 0; i < str_read_len; i++)
{
int C = 1; int a = str_encrypt[i], b=a%mod;
for (int j = 0; j < priKey; j++)
{
C = (C * b) % mod;
}
str_decrypt[i] = C;
}
str_decrypt[i] = '\0'; printf("解密文是:%s \n", str_decrypt);
}
int main()
{
srand(time(NULL));
while (1)
{
prime1 = randPrime(); prime2 = randPrime(); printf("隨機產生兩個素數:prime1 = %d , prime2 = %d ", prime1, prime2);
mod = prime1 * prime2; printf("模數:mod = prime1 * prime2 = %d \n", mod); if (mod > Element_Max) break; // 模數要大於每個加密單元的值
}
eular = (prime1 - 1) * (prime2 - 1); printf("歐拉數:eular=(prime1-1)*(prime2-1) = %d \n", eular);
pubKey = randExponent(); printf("公鑰指數:pubKey = %d\n", pubKey);
priKey = inverse(); printf("私鑰指數:priKey = %d\n私鑰為 (%d, %d)\n", priKey, priKey, mod);
jiami(); jiemi();
return 0;
}
Ⅷ 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語言文件加密和解密
c語言文件加密和解密方法如下:
1、首先打開VC++6.0;
voidDecryptFile(FILE*sfp,FILE*dfp,charpwd)
{
charch;
while((ch=fgetc(sfp))!=EOF)
{
if((ch>='a')&&(ch<='z'))
{
ch=ch^pwd;
ch=(ch-'a'+25)%26+'a';
}
if((ch>='A')&&(ch<='Z'))
{
ch=ch^pwd;
ch=(ch-'A'+25)%26+'A';
}
fputc(ch,dfp);
}
}
輸出函數,輸出文件內容
voidOutputFile(FILE*fp)
{
charch;
while((ch=fgetc(fp))!=EOF)
putchar(ch);
}
主函數,主要調用這幾個函數
intmain()
{
/*用戶輸入的要加密的文件名*/
charsfilename[20];
/*用戶輸入加密後保存的文件名*/
chardfilename[20];
/*用來保存密碼字元*/
charpwd;
FILE*sfp,*dfp;
printf(":
");
/*得到要加密的文件名*/
gets(sfilename);
/*得到加密後你要的文件名*/
printf(":
");
gets(dfilename);
/*得到加密字元*/
printf("PleaseinputyourPassword:
");
//scanf("%c",&pwd);
pwd=getch();
/*屏幕以*來表示輸入的加密字元*/
printf("*
");
/*以只讀方式打開要加密的文件*/
if((sfp=fopen(sfilename,"r"))==0)
{
printf("Can'topenthefile:%s
",sfilename);
exit(0);
}
/*輸出要加密的文件*/
printf(":
");
OutputFile(sfp);
/*建立加密後的文件*/
if((dfp=fopen(dfilename,"w+"))==0)
{
printf("Can'topenorcreatethefile:%s
",dfilename);
//exit(0);
}
/*文件加密*/
fseek(sfp,0L,SEEK_SET);
EncryptFile(sfp,dfp,pwd);
printf("
Encryptedthefilesuccessfully!
");
/*輸出加密後的文件*/
printf(":
");
fseek(dfp,0L,SEEK_SET);
OutputFile(dfp);
fclose(sfp);
fclose(dfp);
getch();
return0;
}
Ⅹ 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;
}