/************************************************************************/
/*caeser.c
/* 凯撒密码是把明文字符按照相同的位移量向后移动
/*比如明文can,位移量为3,密文为fdq
/*本程序仅对英文字母和数字有效
/*使用时将文件置于caeser.c同目录下,密文默认名字为cipher.txt
/************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#define ITEM 2
void encipher();
void decipher();
int main()
{int flag;void (*menu[ITEM])()={encipher,decipher};printf("加密文件——1\n");printf("解密文件——2\n");printf("退出程序——0\n");while(1){scanf("%d",&flag);if(!flag)exit(1);else if(flag==1||flag==2)menu[flag-1]();elsebreak;}return 0;
}
void encipher()
{int key;char ch,c;char file_name[50];FILE *infile,*outfile;printf("输入欲加密文件名:");scanf("%s",file_name);printf("输入加密密钥:");scanf("%d",&key);if((infile=fopen(file_name,"r"))==NULL){printf("Cannot open file!\n");exit(1);}if((outfile=fopen("cipher.txt","w"))==NULL){printf("Cannot open file!\n");exit(1);}ch=fgetc(infile);while(!feof(infile)){if(ch>=48&&ch<=57)//数字加密{c=((ch-48)+key)%10;fputc((char)(c+48),outfile);}else if(ch>=65&&ch<=90)//大写英文字母加密{c=((ch-65)+key)%26;fputc((char)(c+65),outfile);}else if(ch>=97&&ch<=122)//小写英文字母加密{c=((ch-97)+key)%26;fputc((char)(c+97),outfile);}elsefputc(ch,outfile);ch=fgetc(infile);}if(fclose(infile)||fclose(outfile))printf("File cannot close!\n");elseprintf("加密成功");
}
void decipher()
{int key;char ch,c;FILE *infile,*outfile;printf("输入解密密钥:");scanf("%d",&key);if((infile=fopen("cipher.txt","r"))==NULL){printf("Cannot open file!\n");exit(1);}if((outfile=fopen("a.txt","w"))==NULL){printf("Cannot open file!\n");exit(1);}ch=fgetc(infile);while(!feof(infile)){if(ch>=48&&ch<=57)//数字解密{c=((ch-48)-key+10)%10;//此处+10是防止,c==负数fputc((c+48),outfile);}else if(ch>=65&&ch<=90)//大写英文字母解密{c=((ch-65)-key+26)%26;fputc((char)(c+65),outfile);}else if(ch>=97&&ch<=122)//小写英文字母解密{c=((ch-97)-key+26)%26;fputc((char)(c+97),outfile);}elsefputc(ch,outfile);ch=fgetc(infile);}if(fclose(infile)||fclose(outfile))printf("File cannot close!\n");elseprintf("解密成功");
}

凯撒密码(加密与解密)相关推荐

  1. 5.3使用凯撒密码加密和解密英文文件python

    1本关任务:使用凯撒密码加密和解密英文文件.具体要求如下: (1)接收一个字符串为参数,如果参数值为加密,要求用户输入一个要加密的文件名,再输入一个单词做为密钥发生器,用于计算偏移量,对文件中的内容进 ...

  2. Java版 凯撒密码 加密、解密、暴力破解

    Java版 凯撒密码 加密.解密.暴力破解 用Java实现凯撒密码的 '加密' 和 '解密' 工作 代码实现如下: 代码片 package com.hellow.demo;import java.ut ...

  3. 凯撒密码加密、解密、暴力破解(C语言实现)

    C语言设计,替换密码开发设计,2022年9月信息安全课程作业分享 #include<stdio.h> #include<string.h> #include<stdlib ...

  4. python实现凯撒密码加密与解密(暴力求解)

    在密码学中,凯撒密码(英语:Caesar cipher),或称凯撒加密.凯撒变换.变换加密,是一种最简单且最广为人知的加密技术.它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一 ...

  5. 关于凯撒密码加密特征值,base64加密shellcode并分离绕过杀软

    什么是shellcode? 在黑客攻击中,shellcode是一小段代码,用于利用软件漏洞作为有效载荷.它之所以被称为"shellcode",是因为它通常启动一个命令shell,攻 ...

  6. 凯撒密码加密解密C语言详细代码

    凯撒密码加密解密C语言详细代码 凯撒密码 又叫循环移位密码.它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第k个字母替代.它的加密过程可以表示为下面的函数: E(m)=(m+k) mod ...

  7. 凯撒密码加密解密——Java代码(密码学)

    凯撒密码加密解密--Java代码(密码学) 凯撒密码: 恺撒密码(英语:Caesar cipher),或称恺撒加密.恺撒变换.变换加密,是一种最简单且最广为人知的加密技术.它是一种替换加密的技术,明文 ...

  8. C++凯撒密码加密解密算法

    一.算法描述 凯撒密码的加密解密算法,逻辑很简单,就是两个公式: 比如说下面这个例子的加密解密公式,就是位移量为3时的结果 加密公式 f(a)=(a+3) mod 26 解密公式 f(a)=(a+23 ...

  9. python凯撒密码加密写入文件_Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作...

    #-*- coding: gb2312 -*-#用户名密码登录系统(MD5加密并存入文件)及对字符串进行凯撒密码加解密操作#作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/k ...

  10. Python编程:实现凯撒密码加密解密

    凯撒密码 原理: 通过把字母移动一定的位数来实现加解密 明文中的所有字母从字母表向后(或向前)按照一个固定步长进行偏移后被替换成密文. 例如: 当步长为3时,A被替换成D,B被替换成E,依此类推,X替 ...

最新文章

  1. 小知识一、让Swift继续用OC#warning效果
  2. java magic number_Magic Number
  3. Qt for Python之 PySide2+QML 入门示例
  4. glib-2.28.6 的编译和安装 以及错误的解决方法
  5. xcode8 升级后注释快捷键不能使用的解决方法
  6. 事务的特性及事务的隔离级别(转)
  7. python某公司为员工发放奖品_python 练习2
  8. CompletableFuture详解~thenAcceptBoth
  9. python数组对应元素相乘_python – 将一个数组的每一行与numpy中另一个数组的每个元素相乘...
  10. Linux设备驱动模型三 kset
  11. 函数 迭代器,生成器
  12. 微电子学概论简要笔记
  13. 必备的海外贸易沟通工具 - intbell使用教程
  14. 三星 android驱动安装失败,三星USB手机驱动安装失败怎么办?三星USB手机驱动安装失败解决方法...
  15. 上班第一天(3)--一个程序员的成长史(12)
  16. 1359: 最大公约数
  17. windows7 文件夹提示“您当前无权访问该文件夹”的解决方法
  18. 初级C语言之【操作符】
  19. 计算机剪切功能是哪个组合键,剪切快捷键是哪个?电脑剪切快捷键大全
  20. 神经网络原理与实例精解,神经网络计算机的组成

热门文章

  1. DPOS——授权股权证明机制
  2. java 验证码 jfinal 验证码
  3. 自动行尾包装行业调研报告 - 市场现状分析与发展前景预测
  4. 郑州轻工业大学2021新生赛 2786: 这是一道数学题
  5. 服务器背板pcb文件,背板PCB介绍
  6. zTree实现删除树节点
  7. 追踪文献好助手!stork文献鸟使用介绍
  8. js插件jsencrypt实现rsa前端加密php后台解密
  9. 在自己的电脑上搭建一个服务器
  10. python3怎么自己创建一个模块并且调用(个人重新总结了下)