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

c移位加密

發布時間: 2022-09-12 22:44:12

c語言編程: 文件移位加密與解密。

這樣就可以了
#include<stdio.h>
void code(char *p,int key)
{
while(*p!='\0')
{
*p=97+(*p-97+key)%26;
p++;
}
}
void uncode(char *p,int key)
{
while(*p!='\0')
{
*p=97+(*p-71-key)%26;
p++;
}
}
main()
{
char str[100];
int n,key;
printf("輸入密匙:");
scanf("%d",&key);
printf("輸入1加密,輸入2解密:");
scanf("%d",&n);
printf("輸入字元串:");
scanf("%s",str);
if(n==1)
{
code(str,key);
printf("密文為%s\n",str);
}
else if(n==2)
{
uncode(str,key);
printf("原文為%s\n",str);
}
}

② C語言(文件的移位與加密解密)

這道題,並不難,只是樓主,沒有說清,是就字母移位嗎?
但是看你的例子,有不全是。
程序如下:
#include <stdio.h>
#include <stdlib.h>

FILE *source;//源文件
FILE *destination;//目標文件
int key;//密鑰
char file[100];//文件名
void encryption()//加密
{
char ch;
printf("請輸入要加密的文件名\n");
scanf("%s",file);
if((source=fopen(file,"r"))==NULL)
{
printf("無法打開文件!\n");
exit(0);
}
printf("請輸入加密後的文件名\n");
scanf("%s",file);
if((destination=fopen(file,"w"))==NULL)
{
printf("無法創建文件!\n");
exit(0);
}
printf("請輸入密鑰\n");
scanf("%d",&key);
ch=fgetc(source);
while(ch!=EOF)
{
if(ch=='\n')
{
fputc(ch,destination);
ch=fgetc(source);
continue;
}
ch+=key;
fputc(ch,destination);
ch=fgetc(source);
}
fclose(source);
fclose(destination);
}

void decrypt()//解密
{
char ch;
printf("請輸入要解密的文件名\n");
scanf("%s",file);
if((source=fopen(file,"r"))==NULL)
{
printf("無法打開文件!\n");
exit(0);
}
printf("請輸入加密後的文件名\n");
scanf("%s",file);
if((destination=fopen(file,"w"))==NULL)
{
printf("無法創建文件!\n");
exit(0);
}
printf("請輸入密鑰\n");
scanf("%d",&key);
ch=fgetc(source);
while(ch!=EOF)
{
if(ch=='\n')
{
fputc(ch,destination);
ch=fgetc(source);
continue;
}
ch-=key;

fputc(ch,destination);
ch=fgetc(source);
}
fclose(source);
fclose(destination);
}

int main()//主函數提供菜單
{
int choice=0;
printf("******************\n");
printf("1 文件加密\n");
printf("2 文件解密\n");
printf("3 退出\n");
printf("******************\n");
printf("請輸入1 2 3選擇操作\n");
scanf("%d",&choice);

switch(choice)
{
case 1:encryption();break;
case 2:decrypt();break;
case 3:break;
}
return 0;
}

③ C語言,輸入一個字元串,採用字母後移五位的辦法加密,後面幾個字母加五後需要回到前面

int i,j,k; char temp;
for(j=0;j<m;j++){
temp=w[j];//此處有誤,每次循環時j都比之前+1,但是按你的邏輯此處應該是首字母
for(i=0,k=0;i<=N-1,k<=N-2;i++,k++)
w[k]=w[i+1];

w[N-1]=temp;
}
你的邏輯是這樣:
假如字元串是abcdefgh,要將前三個字母移至末尾,則要經過
1.bcdefgha,在這一步,也就是temp=w[0];
for(i=0,k=0;i<=N-1,k<=N-2;i++,k++)
w[k]=w[i+1];
所達到的;
2.第二步進行之前,字元串是bcdefgha,要將b後移,顯然應該將b存成temp,b後面的前移,
所以第二步依然是
temp=w[0];
for(i=0,k=0;i<=N-1,k<=N-2;i++,k++)
w[k]=w[i+1];
以達到
cdefghab;
3,同樣把c暫存,c後面前移,則獲得最後要得到的字元串defghabc。
所以只需要把我在程序中標出的語句改了就可以運行了。

【另外:在
for(i=0,k=0;i<=N-1,k<=N-2;i++,k++)
w[k]=w[i+1];
此處其實k和i的作用一樣,沒有必要用兩個變數,可合二為一:
for(i=0;i<=N-1,k<=N-2;i++)
w[i]=w[i+1];
追問:
我暗號你寫的寫成這樣子:
int i,k,temp=w[0],j;for(j=0;j<m;j++)
{
for(i=0,k=0;i<N-1,k<=N-2;i++,k++)
{
w[k]=w[k+1];
w[N-1]=temp;

for(i=0,k=0;i<=N-1,k<=N-2;i++,k++) {
temp=w[0];
w[k]=w[k+1];
w[N-1]=temp;
}
}
}

還是沒有改變啊!
追答:
int i,j,k; char temp;
for(j=0;j<m;j++){
temp=w[j];//此處有誤,每次循環時j都比之前+1,但是按你的邏輯此處應該是首字母
for(i=0,k=0;i<=N-1,k<=N-2;i++,k++)
w[k]=w[i+1];
w[N-1]=temp;
}
就應該是
int i,j,k; char temp;
for(j=0;j<m;j++){
temp=w[0];
for(i=0,k=0;i<=N-1,k<=N-2;i++,k++)
w[k]=w[i+1];
w[N-1]=temp;
}

④ 利用C語言實現移位加密和解密演算法

呵呵
這兩天剛編了一個
#include<stdio.h>
#include<string.h>
#include<ctype.h>
void main()
{
char a[500];
gets(a);
int n,i;
n = strlen(a);
for(i=0;i<n;i++)
if(a[i]=='y')
a[i]='a';
else if(a[i]=='z')
a[i]='b';
else if (isalpha(a[i]))
a[i] += 2;
printf("%s",a );
}
這個是往後推2的解密。
g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle.
解密試試吧~~
加密的話
改動三個地方就行 自己試試吧 哈哈

⑤ 跪求c語言編程問題 文件移位加密與解密 急!

#include<stdio.h>
#include <string.h>
char JiaMi(char ch,int n1)
{
ch+=n1;
if(ch>'z')
return ch-'z'+'a'-1;
if(ch>'Z'&&ch<'a')
return ch-'Z'+'A'-1;
else return ch;
}
char JieMi(char c,int n2)
{
c=c-n2;
if(c>'Z'&&c<'a')
return c+'z'-'a'+1;
if(c<'A')
return c-'A'+'Z'+1;
else return c;
}
int main()
{
char s[100];
int key;
printf("Input data:\n");
gets(s);
printf("Input key:\n");
scanf("%d",&key);
for(int i=0;i < strlen(s);i++)
s[i]=JiaMi(s[i],key);
printf("加密後:\n");
puts(s);
for(int i=0;i < strlen(s);i++)
s[i]=JieMi(s[i],key);
printf("解密後:\n");
puts(s);
return 0;
}
這樣處理差不多了。。自己看看 改改

⑥ C語言凱撒加密是一種移位替代加密演算法,即將字母表A-Z向左移位,然後用移位後的字母表替原來的明文得到密文

#include<iostream>
#include<string>

usingnamespacestd;

intmain()
{
stringcode;//儲存初始字元串
stringd_code;//加密後的字元串
inti;
intn;//移位的個數
cout<<"Enterthestring"<<endl;
cin>>code;
cout<<"howmanystepdoyouwanttomove?"<<endl;
cin>>n;
for(i=0;i<code.size();++i)
{
if(int(code[i])>97)
{
if(int(code[i])+n>122)
d_code[i]=int(code[i])+n-26;
else
d_code[i]=int(code[i])+n;
}
elseif(int(code[i])+n>90)
d_code[i]=char(int(code[i])+n-26);
else
d_code[i]=char(int(code[i]+n));
}
for(i=0;i<code.size();++i)
{
cout<<d_code[i];
}
cout<<endl;
cout<<"Code="<<code<<endl;
return0;
}

⑦ c語言 文件移位加密與解密

您說的這個方法,我沒有操作過。 給文件加密,我使用的是超級加密3000. 超級加密3000採用國際上成熟的加密演算法和安全快速的加密方法,可以有效保障數據安全! 具體操作方法: 1 下載安裝超級加密3000。

⑧ C語言編寫對文件加密及解密

常用簡單的加密就是把字元移位,讀取一個字元,將它+100,然後存為新文件中,解密時就讀取-100,然後就是原文件了。還有就是讀個字元和一個值異或,解密時還用這個加密的異或一遍,比較省力,一個方法就完成加解密了。

⑨ 用c語言把字元串加密,包括字母和數字,向後偏移三位,需要運用到函數。幫忙改一下錯啊。。

#include<stdio.h>
void sec(char str[]);
void main()
{
char str[10];
int i=0;
printf("input 10 chars:\n");
for(i=0;i<10;i++)
scanf("%c",&str[i]);//<————這里輸入的時候你寫的不對!
sec(str);
for(i=0;i<10;i++)
printf("%c",str[i]);
}
void sec(char str[])
{
int i;
for(i=0;str[i]!='\0';i++)
{
char x=str[i];
if((x>='a'&&x<='z')||(x>='A'&&x<='Z')||(x>='0'&&x<='9'))
x=x+3;
str[i]=x;//<————————這里要把轉換完的x再賦給str[i]
}
}

熱點內容
伺服器有外網ip 發布:2025-05-19 14:02:02 瀏覽:833
電腦上c語言編程軟體 發布:2025-05-19 13:55:17 瀏覽:125
php56windows 發布:2025-05-19 13:54:23 瀏覽:717
如何查看攻擊過伺服器的ip地址 發布:2025-05-19 13:45:44 瀏覽:941
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:336
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:380
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:613
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:32
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:107
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:945