移位密码(加密+解密)C++实现
移位密码
加密C=Ek(m)=m+k mod 26
解密m=Dk(m)=c-k mod 26
密钥空间|k|=26=|c|=|m|
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<map>
#include<string>
using namespace std;
map<char,int>letter;
void init()
{
for(int i=;i<=;i++)
{
char l='a'+i;
letter[l]=i;
}
}
void enc(char s[],int k)
{
int len=strlen(s);
string ans="";
for(int i=;i<len;i++)
{
int a=letter[s[i]];
int b=(a+k)%;
ans+=('a'+b);
}
cout<<ans<<endl;
} void solve(char s[])
{
int len=strlen(s);
for(int k=;k<=;k++)
{
string ans="";
for(int i=;i<len;i++)
{
int a=letter[s[i]];
int b=(a+k)%;
ans+=('a'+b);
}
cout<<ans<<" "<<k<<endl;
}
} int main()
{
init();
printf("请输入明文:\n");
char s[],m[];
scanf("%s",&s);
int k;
printf("请输入密钥:\n");
scanf("%d",&k);
printf("输出密文:\n");
enc(s,k);
printf("请输入密文:\n");
scanf("%s",m);
printf("请输明文:\n");
solve(m);
system("pause");
return ;
}
移位密码(加密+解密)C++实现的更多相关文章
- c# 对用户密码加密解密
一.使用16位.32位.64位MD5方法对用户名加密 1)16位的MD5加密 ? 1 2 3 4 5 6 7 8 9 10 11 12 /// <summary> /// 16位MD5加密 ...
- openfire 用户密码加密解密
1.openfire采用的加密方法 Blowfish.java /** * $RCSfile$ * $Revision: 3657 $ * $Date: 2002-09-09 08:31:31 -07 ...
- Openfire用户密码加密解密
需求要求审核过程中都用匿名进行用户注册登录,注册用户审核通过后才使用openfire内置表 如何做到用户密码统一 Openfire是通过org.jivesoftware.util.Blowfish.j ...
- 凯撒密码加密解密--JAVA实现(基础)
凯撒密码一种代换密码,据说凯撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码.凯撒密码的基本思想是:通过把字母移动一定的位数来实现加密和解密.明文中的所有字母都在字母表上向后(或向前) ...
- vue 登录 + 记住密码 + 密码加密解密
<template> <el-form :model="ruleForm"> <h3 class="title">系统登录& ...
- 困在栅栏里的恺撒WriteUp(附栅栏密码加密解密脚本)
题目地址:http://www.shiyanbar.com/ctf/1867 这道题目并不难,就是先用栅栏密码解密,然后再用恺撒密码解密就好. 1. 6代表了栅栏密码的栏数(说实话,一开始我也没看出来 ...
- EBS密码加密研究
DECLARE v_password_1 VARCHAR2(240); v_password_2 VARCHAR2(240); v_password_3 VARCHAR2(240); ...
- Druid密码加密
pom里引用: <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring ...
- 围在栅栏中的爱WriteUp(附QWE密码加解密脚本)
题目的链接:http://www.shiyanbar.com/ctf/1917 1.首先题目给出的是摩尔斯电码: 在下面的网站上解密:https://www.cryptool.org/en/cto-c ...
- C#与Java同步加密解密DES算法
在实际项目中,往往前端和后端使用不同的语言.比如使用C#开发客户端,使用Java开发服务器端.有时出于安全性考虑需要将字符加密传输后,由服务器解密获取.本文介绍一种采用DES算法的C#与Java同步加 ...
随机推荐
- java常见面试题目(二)
部分没有答案可以自行百度. 1.myeclipse与eclipse的区别. 2.说说对maven或者SVN的理解. 3.类的加载过程 (创建对象的过程) 1)子父类里静态属性 赋上默认初始值 如果有 ...
- 用HTML5的canvas做一个时钟
对于H5来说,canvas可以说是它最有特色的一个地方了,有了它之后我们可以随意的在网页上画各种各样的图形,做一些小游戏啊什么的.canvas这个标签的用法,在网上也有特别多的教程了,这里就不作介绍了 ...
- 阿里P8Java大牛仅用46张图让你弄懂JVM的体系结构与GC调优。
本PPT从JVM体系结构概述.GC算法.Hotspot内存管理.Hotspot垃圾回收器.调优和监控工具六大方面进行讲述.图文并茂不生枯燥. 此PPT长达46页,全部展示篇幅过长,本文优先分享前十六页 ...
- JAVA基础知识(七)存根类
存根类是一个类,它实现了一个接口,它的作用是:如果一个接口有很多方法,如果要实现这个接口,就要实现所有的方法.但是一个类从业务来说,可能只需要其中一两个方法.如果直接去实现这个接口,除了实现所需的方法 ...
- JVM类生命周期概述:加载时机与加载过程
一个.java文件在编译后会形成相应的一个或多个Class文件,这些Class文件中描述了类的各种信息,并且它们最终都需要被加载到虚拟机中才能被运行和使用.事实上,虚拟机把描述类的数据从Class文件 ...
- Git 实用技巧:git stash
我们经常会遇到这样的情况: 正在dev分支开发新功能,做到一半时有人过来反馈一个bug,让马上解决,但是新功能做到了一半你又不想提交,这时就可以使用git stash命令先把当前进度保存起来.然后切换 ...
- pip安装第三方库
不是所有的第三方Python包都能通过pip来安装,只能是发布在pypi.org上面的才能通过pip安装. pypi是什么? pypi是一个仓库,上面存放了大量的Python第三方软件包,是由Pyth ...
- 【win10主机】访问virtualbox上【32位winXP系统虚拟机】上启动的项目
win10上创建虚拟网卡: 1,右键此电脑点击管理——设备管理器——网络适配器: 2,点左上角菜单栏的 操作——添加过时硬件: 3,点下一步 4,点安装我手动从列表选择的硬件(高级)M 5,点网络适配 ...
- 以阿里IoT开发物联网和应用平台
1. 链接物联网的概念 物联网(The Internet of Things,简称IOT)是指通过 各种信息传感器.射频识别技术.全球定位系统.红外感应器.激光扫描器等各种装置与技术,实时采集任何需要 ...
- 并发编程 Semaphore的使用和详解
类Semaphore的基本使用 Semaphore的作用:限制线程并发的数量 课外话题[多线程的同步概念]:其实就是排着队去执行一个任务,执行任务是一个一个的执行,这样的优点是有助于程序逻辑的正确性, ...