當前位置:首頁 » 密碼管理 » c加密

c加密

發布時間: 2022-01-11 12:43:40

c語言 簡單對字母進行加密

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

⑵ 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語言加密演算法

看你催就倉促寫了個,自我感覺寫的不是很好,但是能用了。數據只能是大寫字母組成的字元串。
加密的時候,輸入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加密程序怎樣加密文件

你加密的目的是什麼呢?
你也不把文件給大家看...
我告訴你個辦法吧,不需要軟體,利用DOS命令就可以達到目的了...
1.在DOS下,隨便進入哪個盤(文件夾).
2.用DOS命令創建文件夾(文件夾的名字).
3.在運行裡面打開那個文件夾.(會彈開你創建的文件夾)
4.再把想要保密的東西cut進去,正常關閉.
這個文件夾會顯示在你的盤符裡面,但是不能正常打開,只有用第3步打開.
最後,想刪除這個文件夾,也得用DOS命令刪除!!
DOS命令你就自己去查吧..呵呵.

⑸ 怎樣用C語言加密啊

凱撒密碼。我寫下,有問題,再找。要保證輸入的都是小寫字母。
#include<stdio.h>
int
main()
{
char
str[100];
int
i;
scanf("%s",str);
for(i=0;str[i]!='\0';i++)
str[i]=(str[i]-'a'+3)%26+'A';
printf("%s\n",str);
return
0;
}

⑹ 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盤加密,不讓別人打開我的C盤?

計算機硬碟加密的四種方法

修改硬碟分區表信息、對硬碟啟動加口令、對硬碟實現用戶加密管理、對某個邏輯盤實現防寫,四大方法加密硬碟數據。
一、修改硬碟分區表信息
硬碟分區表信息對硬碟的啟動至關重要,找不到有效的分區表,將不能從硬碟啟動或即使從軟盤啟動也找不到硬碟。通常,第一個分區表項的第0子節為80H,表示C盤為活動DOS分區,硬碟能否自舉就依*它。若將該位元組改為00H,則不能從硬碟啟動,但從軟盤啟動後,硬碟仍然可以訪問。分區表的第4位元組是分區類型標志,第一分區的此處通常為06H,表示C盤為活動DOS分區,若對第一分區的此處進行修改可對硬碟起到一定加密作用。
具體表現在:
1.若將該位元組改為0,則表示該分區未使用,當然不能再從C盤啟動了。從軟盤啟動後,原來的C盤不見了,你看到的C盤是原來的D盤,D盤是原來的E盤,依此類推。
2.若將此處位元組改為05H,則不但不能從硬碟啟動,即使從軟盤啟動,硬碟的每個邏輯盤都不可訪問,這樣等於整個硬碟被加密了。另外,硬碟主引導記錄的有效標志是該扇區的最後兩位元組為55AAH。若將這兩位元組變為0,也可以實現對整個硬碟加鎖而不能被訪問。硬碟分區表在物理0柱面0磁頭1扇區,可以用NortonforWin95中的Diskedit直接將該扇區調出並修改後存檔。或者在Debug下用INT13H的02H子功能將0柱面0磁頭1扇區讀到內存,在相應位置進行修改,再用INT13H的03H子功能寫入0柱面0磁頭1扇區就可以了。
上面的加密處理,對一般用戶來講已足夠了。但對有經驗的用戶,即使硬碟不可訪問,也可以用INT13H的02H子功能將0柱面0磁頭1扇區讀出,根據經驗將相應位置數據進行修改,可以實現對硬碟解鎖,因為這些位置的數據通常是固定的或有限的幾種情形。另外一種保險但顯得笨拙的方法是將硬碟的分區表項備份起來,將其全部變為0,這樣別人由於不知道分區信息,就無法對硬碟解鎖和訪問硬碟了。

二、對硬碟啟動加口令
我們知道,在CMOS中可以設置系統口令,使非法用戶無法啟動計算機,當然也就無法使用硬碟了。但這並未真正鎖住硬碟,因為只要將硬碟掛在別的計算機上,硬碟上的數據和軟體仍可使用。要對硬碟啟動加口令,可以首先將硬碟0柱面0磁頭1扇區的主引導記錄和分區信息都儲存在硬碟並不使用的隱含扇區,比如0柱面0磁頭3扇區。用Debug重寫一個不超過512位元組的程序(實際上100多位元組足矣)裝載到硬碟0柱面0磁頭1扇區。該程序的功能是執行它時首先需要輸入口令,若口令不對則進入死循環;若口令正確則讀取硬碟上存有主引導記錄和分區信息的隱含扇區(0柱面0磁頭3扇區),並轉去執行主引導記錄。
由於硬碟啟動時首先是BIOS調用自舉程序INT19H將主硬碟的0柱面0磁頭1扇區的主引導記錄讀入內存0000:7C00H處執行,而我們已經偷梁換柱,將0柱面0磁頭1扇區變為我們自己設計的程序。這樣從硬碟啟動時,首先執行的不是主引導程序,而是我們設計的程序。在執行我們設計的程序時,口令若不對則無法繼續執行,也就無法啟動了。即使從軟盤啟動,由於0柱面0磁頭1扇區不再有分區信息,硬碟也不能被訪問了。當然還可以將我們設計的程序像病毒一樣,將其中一部分駐留在高端內存,監視INT13H的使用,防止0柱面0磁頭1扇區被改寫。

三、對硬碟實現用戶加密管理
UNIX操作系統可以實現多用戶管理,在DOS系統下,將硬碟管理系統進行改進,也可實現類似功能的多用戶管理。該管理系統可以滿足這樣一些要求:1.將硬碟分為公用分區C和若干專用分區D。其中「超級用戶」來管理C區,可以對C區進行讀寫和更新系統;「特別用戶」(如機房內部人員)通過口令使用自己的分區,以保護自己的文件和數據;「一般用戶」(如到機房上機的普通人員)任意使用劃定的公用分區。後兩種用戶都不能對C盤進行寫操作,這樣把操作系統和大量應用軟體裝在C盤,就能防止在公共機房中其他人有意或無意地對系統和軟體的破壞,保證了系統的安全性和穩定性。2.在系統啟動時,需要使用軟盤鑰匙盤才能啟動系統,否則硬碟被鎖住,不能被使用。此方法的實現可通過利用硬碟分區表中各邏輯盤的分區鏈表結構,採用匯編編程來實現。

四、對某個邏輯盤實現防寫
我們知道,軟盤上有防寫缺口,在對軟盤進行寫操作前,BIOS要檢查軟盤狀態,防寫缺口被封住,則不能進行寫操作。而防寫功能對硬碟而言,在硬體上無法進行,但可通過軟體來實現。在DOS系統下,磁碟的寫操作包當然,看http://www.17ush.com

PS:給自己玩玩我不反對,可不要用來干壞事兒哦~

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

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

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

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

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

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

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

頭文件部分:

主函數部分:

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

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

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

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

頭文件部分:

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

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

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

⑼ 怎樣用C給字元加密

利用ASC碼,字元與數字的對應關系,你可以將任意字元加上任意規律的數字輸出,反之則解密。

⑽ c語言加密解密演算法

這里使用的是按位加密,按ASCII碼進行加密的演算法自己寫個,很容易的。
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>

void dofile(char *in_fname,char *pwd,char *out_fname);/*對文件進行加密的具體函數*/
void usage(char *name);

void main(int argc,char *argv[])/*定義main()函數的命令行參數*/
{
char in_fname[30];/*用戶輸入的要加密的文件名*/
char out_fname[30];
char pwd[10];/*用來保存密碼*/

if(argc!=4)
{/*容錯處理*/
usage(argv[0]);
printf("\nIn-fname:\n");
gets(in_fname);/*得到要加密的文件名*/
while(*in_fname==NULL)
{
printf("\nIn-fname:\n");
gets(in_fname);
}

printf("Password 6-8:\n");
gets(pwd);/*得到密碼*/
while(*pwd==NULL || strlen(pwd)>8 || strlen(pwd)<6)
{
printf("Password 6-8:\n");
gets(pwd);
}

printf("Out-file:\n");
gets(out_fname);/*得到加密後你要的文件名*/
while(*in_fname==NULL)
{
printf("Out-file:\n");
gets(out_fname);
}
while(!strcmp(in_fname,out_fname))
{
printf("文件名不能和源文件相同\n");
printf("Out-file:\n");
gets(out_fname);
}
dofile(in_fname,pwd,out_fname);
printf("加密成功,解密請再次運行程序\n");

}
else
{/*如果命令行參數正確,便直接運行程序*/

strcpy(in_fname,argv[1]);
strcpy(pwd,argv[2]);
strcpy(out_fname,argv[3]);
while(*pwd==NULL || strlen(pwd)>8 || strlen(pwd)<6)
{
printf("Password faied!\n");
printf("Password 6-8:\n");
gets(pwd);
}

while(!strcmp(in_fname,out_fname))
{
printf("文件名不能和源文件相同\n");
printf("Out-file:\n");
gets(out_fname);
while(*in_fname==NULL)
{
printf("Out-file:\n");
gets(out_fname);
}
}

dofile(in_fname,pwd,out_fname);
printf("加密成功,解密請再次運行程序\n");

}

}

/*加密子函數開始*/
void dofile(char *in_fname,char *pwd,char *out_file)
{
FILE *fp1,*fp2;
register char ch;
int j=0;
int j0=strlen(pwd);

fp1=fopen(in_fname,"rb");
if(fp1==NULL)
{
printf("cannot open in-file.\n");
exit(1);/*如果不能打開要加密的文件,便退出程序*/
}
fp2=fopen(out_file,"wb");
if(fp2==NULL)
{
printf("cannot open or create out-file.\n");
exit(1);/*如果不能建立加密後的文件,便退出*/
}

/*加密演算法開始*/
while(j0>=0)
{
ch=fgetc(fp1);
while(!feof(fp1))
{
fputc(ch^pwd[j>=j0?j=0:j++],fp2);/*異或後寫入fp2文件*/
ch=fgetc(fp1);
}
j0--;
}
fclose(fp1);/*關閉源文件*/
fclose(fp2);/*關閉目標文件*/
}

void usage(char *name)
{
printf("\t=======================File encryption======================\n");
printf("\tusage: %s In-fname password out_fname\n",name);
printf("\tExample: %s file1.txt 12345678 file2.txt\n",name);
}

熱點內容
睡眠緩解壓力 發布:2024-11-15 18:20:02 瀏覽:433
什麼是統一存儲 發布:2024-11-15 18:19:02 瀏覽:514
b01智能鎖出廠密碼是什麼 發布:2024-11-15 18:11:01 瀏覽:677
解壓密碼提示在哪裡 發布:2024-11-15 18:09:31 瀏覽:598
db2建表空間時怎麼配置頁大小 發布:2024-11-15 17:58:45 瀏覽:424
我的世界好玩地鐵伺服器 發布:2024-11-15 17:48:54 瀏覽:359
1710小游戲伺服器ip 發布:2024-11-15 17:48:01 瀏覽:663
狂三腳本 發布:2024-11-15 17:31:38 瀏覽:872
附近存儲櫃 發布:2024-11-15 17:15:17 瀏覽:452
王選解決漢字存儲問題 發布:2024-11-15 17:15:11 瀏覽:660