当前位置:首页 » 密码管理 » 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]
}
}

热点内容
安卓手机怎么设定背景墙 发布:2025-05-19 18:29:40 浏览:1001
androidstudio断点调试 发布:2025-05-19 18:20:23 浏览:766
abaqus如何配置证书 发布:2025-05-19 18:19:38 浏览:583
美食的密码是多少 发布:2025-05-19 18:18:58 浏览:72
买合资车选哪个品牌好配置高 发布:2025-05-19 18:01:51 浏览:49
pythonc回调 发布:2025-05-19 17:55:50 浏览:268
苹果如何把通讯录转移到安卓手机 发布:2025-05-19 17:49:13 浏览:255
开机设密码源码 发布:2025-05-19 17:47:20 浏览:885
死锁检测算法 发布:2025-05-19 17:45:17 浏览:109
sql查询列 发布:2025-05-19 17:38:16 浏览:279