導航:首頁 > 源碼編譯 > c語言加密演算法

c語言加密演算法

發布時間:2022-02-12 23:43:37

Ⅰ 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);
}

Ⅱ C語言加密演算法

#include<stdio.h>

intconstN=10;

//將方陣a[N][N]第row行循環左移m位
voidRowLeftn(chara[][N],intn,introw,intm){
inti,j,t;
if(row<0||row>n-1)return;
for(i=0;i<m;++i){
t=a[row][0];
for(j=0;j<n-1;++j)
a[row][j]=a[row][j+1];
a[row][n-1]=t;
}
}

//將方陣a[N][N]第col列循環上移m位
voidColUpn(chara[][N],intn,intcol,intm){
inti,j,t;
if(col<0||col>n-1)return;
for(i=0;i<m;++i){
t=a[0][col];
for(j=0;j<n-1;++j)
a[j][col]=a[j+1][col];
a[n-1][col]=t;
}
}

intmain(){
chartxt[N][N];
inta[N],b[N],i,j,n;
while(scanf("%d",&n)==1&&n>0){
fflush(stdin);
for(i=0;i<n;++i){
for(j=0;j<n;++j)
scanf("%c",&txt[i][j]);
}
for(i=0;i<n;++i){
for(j=0;j<n;++j)
printf("%c",txt[i][j]);
printf(" ");
}
for(i=0;i<n;++i)scanf("%d",&a[i]);
for(i=0;i<n;++i)scanf("%d",&b[i]);
for(i=0;i<n;++i)RowLeftn(txt,n,i,a[i]);
for(i=0;i<n;++i)ColUpn(txt,n,i,b[i]);
for(i=0;i<n;++i){
for(j=0;j<n;++j)
printf("%c",txt[i][j]);
}
printf(" ");
}
return0;
}

Ⅲ 用c語言編寫凱撒加密演算法

#include<stdio.h>
#include<string.h>
#definePASSWORD3
intmain()
{
charc;
FILE*source=fopen("source.txt","r");//源解密時將該源文件換成加密後的文件
FILE*result=fopen("result.txt","w");//處理結果

while((c=fgetc(source))!=EOF)//加密
{
if(c>='a'&&c<='z')
c='a'+(c-'a'+PASSWORD)%26;
elseif(c>='A'&&c<='Z')
c='A'+(c-'A'+PASSWORD)%26;
fputc(c,result);
}
/*
while((c=fgetc(source))!=EOF)//解密解密時將加密部分注釋掉
{
if(c>='a'&&c<='z')
c='a'+(c-'a'+26-PASSWORD)%26;
elseif(c>='A'&&c<='Z')
c='A'+(c-'A'+26-PASSWORD)%26;
fputc(c,result);
}
*/
close(source);
close(result);
system("pause");
return0;
}

這是之前寫的,可以看看

Ⅳ c語言的AES加密演算法

這個就比較麻煩了,AES還是比較難破譯的,暴力破譯就甭試了,還是想想別的非技術的辦法吧。

Ⅳ C語言加密演算法(簡單)

MD5是HASH演算法,他不能用來解密的,他主要是用來校驗信息的完整型,也就是我們常說的數值簽名,你可以去RFC文檔上收索,上邊有他具體的演算法,代碼也是封裝好了的,可以去研究研究

Ⅵ 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語言寫Kaesar加密演算法

void Kaesar(char *p)
{
int i = 0;
while( p[i] )
{
if(p[i] = 32)
{
printf("%d\t",3*27+5);
i ++;
}
else if(p[i] >= 'a' && p[i] <= 'z')
{
printf("%d\t",3*(p[i]-'a'+1)+5);
i ++;
}
else if(p[i] >= 'A' && p[i] <= 'Z')
{
printf("%d\t",3*(p[i]-'Z'+1)+5);
i ++;
}
else
i++;
}
}
隨便寫了下,未驗證,傳入的是字元串指針,密文C直接列印到屏幕了,看看能不能調通。主函數什麼的自己填。

Ⅷ 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

Ⅸ des加密演算法c語言

http://..com/question/80040477.html?si=4

http://..com/question/40022679.html?si=5

Ⅹ 求一個加密演算法,有C語言常式給分

既然求簡單,我幫你寫了個加解密演算法相同的。

#include "assert.h"
#include "stdlib.h"
#include "string.h"

char *Encode(char *sSrc)
{
assert(NULL != sSrc);

char *p = NULL;
int iSrcLen = strlen(sSrc);

p = (char *)malloc((iSrcLen + 1) * sizeof(char));
strcpy(p, sSrc);
p[iSrcLen] = '\0';

int i = 0;
while (i < iSrcLen)
{
if (p[i] >= '0' && p[i] <= '9')
{
p[i] += 5;
p[i] = '0' + (p[i] - '0') % 10;
}

++i;
}

return p;
}

// 測試代碼
int main()
{
char *p = Encode("123");
printf("Encode:%s\n", p); // 加密結果678

char *q = Encode(p);
printf("Decode:%s\n", q); // 解密結果123

free(p);
free(q);

return 0;
}

閱讀全文

與c語言加密演算法相關的資料

熱點內容
遮陽網黑色加密 瀏覽:856
粉紅色的文件夾用英語怎麼說 瀏覽:347
手機桌面文件夾整理怎麼備注名稱 瀏覽:870
primepdf 瀏覽:185
php獲取登錄ip 瀏覽:987
汽車前擋風玻璃與中控台加密封條 瀏覽:592
程序員轉行做家居 瀏覽:248
網頁怎麼安裝app 瀏覽:797
電子愛好者單片機作品 瀏覽:233
es文件夾瀏覽軟體 瀏覽:495
怎麼把app商店換成外國的 瀏覽:103
中國人保app怎麼綁銀行卡 瀏覽:328
文件打開命令錯誤 瀏覽:609
粗矩形命令 瀏覽:419
選擇ghost壓縮率 瀏覽:721
程序員那麼可愛陸離出國哪一集 瀏覽:832
彎曲命令 瀏覽:409
總產值同期相比演算法 瀏覽:311
win7主題程序員 瀏覽:213
海爾app怎麼連wifi 瀏覽:317