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

将某一已知文件的内容(仅限于英文字母)以字符形式读出,根据密钥(用户从键盘输入)将对应字符进行移位操作即可,解密时移动相反。
如加密:设原文为abcdef,密钥为5,则有abcdef每个字母按字母表向后移动5们(注:z后接a)可得到密文(乱码)fghijkl。
对该文件解密:文件内容为fghijk1,密钥为5,则有fghijk1每个字母向前移动5位(注a后接z),可得到原文abcdef。

我自己用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;
}
}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  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(); /*测试解密*/ }本回答被网友采纳

求大神给一个C语言模块设计的题目,只要题目
1. 输出“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行,每一列对角线之和均相等。例如,三阶魔方阵为:8 1 6 3 5 7 4 9 2 要求输出1至n2的自然数构成的魔方阵。2.给出年、月、日,计算该日是该年的第几天。3.移位加密与解密 (1)文件加密 (2)文件解密 说...

c语言文件加密和解密
c语言文件加密和解密方法如下:1、首先打开VC++6.0;2、选择文件,新建;3、选择C++ source file 新建一个空白文档;4、声明头文件 include<stdio.h> include<stdlib.h> include<string.h> 首先写个加密函数,算法就是简介里说的;void EncryptFile(FILE *sfp,FILE *dfp,char pwd){char ch;if(...

c语言 加密或解密一个文件程序出现的问题
void read(){ char sname[20];int j=0;printf("输入要加密或解密文本的文件名");scanf("%s",sname);if((fp=fopen(sname,"r"))==NULL){printf("Cannot open the file\\n");exit(0);} \/\/fscanf(fp,"%s",ch);while(!feof(fp)){ch[j]=fgetc(fp);j++;} ch[j]='\\0';\/\/fclos...

跪求c语言,按位取反文件加密的源代码。最好有注释
输入原始文件和目标文件 进行加密 然后再执行程序 输入刚才得到的加密文件以及新的目标文件名 进行解密 include <stdio.h>int main(){char name[100];int c;FILE *fp1, *fp2;printf("input source file name:");scanf("%s",name);fp1 = fopen(name, "rb");if(fp1 == NULL) {printf("ca...

将凯撒密码X的加密、解密过程用C语言编程实现
){ return ('a'+(ch-'a'+n)%26);}return ch;}void menu()\/*菜单,1.加密,2.解密,3.暴力破解,密码只能是数字*\/{clrscr();printf("\\n===");printf("\\n1.Encrypt the file");printf("\\n2.

用C语言编程恺撒密码加密解密程序
include <stdio.h>#define isletter( c ) ( ((c)>='a'&&(c)<='z') || ((c)>='A'&&(c)<='Z') )void Enc( const char *str, char *out, int key ){ int i = 0; while( str[i] ) { if ( isletter( str[i] ) ) { out[i] = str[i] +...

高分求编程题程序(C语言)
int c=0;while(b.tail!=0){ printf("%d",b.tail->d);c++;b.tail=b.tail->previous;} printf("\\n");printf("%d digits in total.\\n",c);} void free_memory(BigInt *b){ Digit *p;while(b->head!=0){ p=b->head->next;free(b->head);b->head=p;} b->head=0;b->...

异或加密与解密(C语言)注释
异或运算有一个特性 若 c = a xor b 那么 a = c xor b 根据这样的特性,你有一个信息a,然后你产生一个密码b,把它和a异或运算之后就变成了c。这就是一种加密,解密的时候,把c重新和b异或运算,就变回了a。顺带说一下,异或是很弱的加密方法,很容易被破解的。

C++代码 加密解密“恺撒密码” 要做界面
纯手工写,下面的我写的两个加密与解密的函数,LZ只要放到你的button按钮代码的同一文件里就可以了,LZ可以在点击加密的时候先获取textbox1的值,再调用encoder函数,然后把返回值写到textbox2里,解密同理。我这里MFC跑不起来 include <iostream> include<string> using namespace std;string encode="...

C语言考试中如何解答四位数移位计算问题?
第4章,四位数计算,涉及奇偶性统计、方差问题、移位计算等,通过实际问题训练四位数的运算技巧。第5章,字符串处理,内容丰富,包括字符替代、排序、加密解密等,强化字符串操作和处理能力。第6章,结构体数组排序,讲解如何对结构体数据进行排序,以及特定问题的求解,如最高分学生的查找。第7章,选票类...

相似回答