跪求c语言编程问题 文件移位加密与解密 急!

将某一已知文件的内容(仅限于英文字母)以字符形式读出,根据密钥(用户从键盘输入)将对应字符进行移位操作即可,解密时移动相反。如加密:设原文为abcdef,密钥为5,则有a... 将某一已知文件的内容(仅限于英文字母)以字符形式读出,根据密钥(用户从键盘输入)将对应字符进行移位操作即可,解密时移动相反。
如加密:设原文为abcdef,密钥为5,则有abcdef每个字母按字母表向后移动5们(注:z后接a)可得到密文(乱码)fghijkl。
对该文件解密:文件内容为fghijk1,密钥为5,则有fghijk1每个字母向前移动5位(注a后接z),可得到原文abcdef。
展开
 我来答
匿名用户
2014-01-25
展开全部
我自己用C#做了一下这功能,注释都写上了,希望能帮上你忙 ~ ~using System;
using System.Collections.Generic;
using System.Text;namespace myHomeworkTest30
{
class Program
{
static void Main(string[] args)
{
Emp emp = new Emp();//定义一个对象.自动调用其构造方法,接收字符串并转化为字符数组
int len=emp.show();//调用实现加密字符串的方法,并返回字符数组的长度

for (int i = 0; i < len-1; i++)
{
Console.Write(emp[i]);//通过索引器进行输出
}
Console.ReadLine();

}
}
public class Emp
{
public string str = "";//接收字符串
public char[] arr;//字符数组来用存放把字符串转后成字符
public char first;//加密后的字符串中的第一个字符
public Emp()
{
Console.WriteLine("请输入一个要加密的字符串:");
str = Console.ReadLine();//接收
arr=str.ToCharArray();//字符串.ToCharArray()把字符串转化为字符数组
}
public int show()//实现加密的方法
{
first=arr[arr.Length - 1];//把原字符数组中的最后一个字符拿出来作为加密后的第一个字符
Console.WriteLine("加密后的字符串为:");
Console.Write(first);//输出加密后的第一个字符

for (int i = 0; i < arr.Length; i++)
{
arr[i] = (char)(arr[i] + 3);//对于其它的字符进行加密,+3

}
return arr.Length;//返回字符数组的长度
}
//定义一个索引器
public char this[int index]
{
get
{
return arr[index];
}
set
{
arr[index] = value;
}
}
}
}
匿名用户
2014-01-25
展开全部
#include<stdio.h>
#include<stdlib.h>/*加密算法*//*说明:加密算法是读取一个保存有明文信息的文件,然后将明文进行加密并存入生成加密的文件*/
void jiam(){
int key;
char ch;
FILE *fp,*fp1;
printf("请输入密钥:");
scanf("%d",&key);
fp=fopen("mw.txt","r");
fp1=fopen("mm.txt","w");
if(fp==NULL || fp1==NULL){
printf("open file fail!");
return;
}
while((ch=fgetc(fp))!=EOF){ ch+=key; /*按密钥的值进行移动*/
if(ch>'z' || ch>'Z'&&ch<'a')
ch-=26; /*加上密值后其ASCII比Z大,则-26将其转为字母表开头*/
fputc(ch,fp1);
}
fclose(fp);
fclose(fp1);
} /*解密算法*//*说明:读取一个存有密文信息的文本文件,将各个字符进行解密并显示在屏幕上*/void jiem(){
char ch;
int key;
FILE *fp;
printf("请输入密钥:");
scanf("%d",&key);
fp = fopen("mm.txt","r");
if(fp==NULL){
printf("open file fail");
return;
}
while((ch=fgetc(fp))!=EOF){ /*加黑部分表示读取一个字符存入ch,并判断该字符是否是文件结束符*/ ch-=key; /*将ASCII码减掉密钥的值,转为明文*/
if(ch<'a' && ch>'Z' || ch<'A') /*如果出现了比a小且不在字母表的字符,则其解密成字母表末尾字符*/
ch+=26;
putchar(ch);
}
}
void main(){
jiam(); /*测试加密*/
jiem(); /*测试解密*/ }
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式