字符串加密/解密总结

您所在的位置:网站首页 字符串密码如何输入 字符串加密/解密总结

字符串加密/解密总结

2024-07-07 03:50:04| 来源: 网络整理| 查看: 265

我们在笔试时经常会遇到这样的题目。给出两个字符串,一个是没加密的,一个是加密之后的,让你找出加密规则,并且实现输入任意合法字符串进行加密或者解密操作。具体题目如下:

01_简单密码

密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码。他是这么变换的,大家都知道手机上的字母:1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,就这么简单,渊子把密码中出现的小写字母都变成对应的数字,数字和其他的符号都不做变换。声明:密码中没有空格,而密码中出现的大写字母则变成小写之后往后移一位,如:X,先变成小写,再往后移一位,不就是y了嘛,简单吧。记住,z往后移是a哦。输入描述:输入包括多个测试数据。输入是一个明文,密码长度不超过100个字符,输入直到文件结尾输出描述:输出渊子真正的密文输入YUANzhi1987输出zvbo9441987

题目分析

这种问题一般解题思路就是遍历整个字符串,对其中的某一个或者某一些字符进行对应的转换。比如大小写转换,左移n个位置或者右移n个位置等等。这样肯能会导致代码很繁多,我们可以使用字典数组和原字符数组来解决这个问题。比如建立一个数组为C[]={0,1,2,3,4,5,6,7,8,9},我们称他为原字符数组。再建立一个数组为D[]={2,3,4,5,6,7,8,9,0,1},我们称他为字典数组。两个数组中的元素一一对应。比如输入为s=“12345”,则加密后s1=“34567”。我们在进行加密操作时,只需要在原字符数组中找到每个字符的位置,并输出字典数组中对应位置的字符即可。进行解密操作时,刚好和加密相反,只需要在字典数组中找到每个字符的位置,并输出原字符数组中对应位置的字符。

Java代码实现: import java.util.Scanner; public class 简单密码 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); String str1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; String str2 = "bcdefghijklmnopqrstuvwxyza222333444555666777788899990123456789"; char[] ch1 = str1.toCharArray(); char[] ch2 = str2.toCharArray(); for (int i = 0; i < str.length(); i++) { for (int j = 0; j < ch1.length; j++) { if (str.charAt(i) == ch1[j]) System.out.print(ch2[j]); } } } }02_字符串加密

已知一段消息由26个小写字母和0-9这10个数字构成。现在需要设计一种简单的字典加密法和解密法,把消息加密为简单密文,或者把一段密文还原为原文。说明:本字典加解密算法中用的字典由36个字符组成,分别为:abcdefghijkimnopqrstuvwxyz0123456789,加密前、后的字符串也是由这36个字符组成。输入字典格式为36个字符组成的串D。串中每个字符表示A中对应位置处的字符加密后的结果,如A:abcdefghijklmnopqrstuvwxyz0123456789D:fghijklmnopqrstuvwxyz0123456789abcde表示a=>f,b=>g..0=>5..9=>e请根据输入对字符串进行加密或解密。输入描述:第一行是字典,由36个字符数字组成,具体含义见题目中的相关说明。第二行是模式,1表示加密,0表示解密第三行是待加密字符串或待解密字符串,长度小于10000输出描述:使用对应字典加密或解密后的字符串。示例1输入输出示例仅供调试,后台判题数据-般不包含示例输入:fghijklmnopqrstuvwxyz0123456789abcde1a3579hello输出:f8acemjqqt

题目分析

这道题的要点在于:字典是由你自己定义的,并不固。解法还是和第一题一样。

Java代码实现: import java.util.Scanner; public class 字符串加密 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String D = sc.nextLine(); String A = "abcdefghijklmnopqrstuvwxyz0123456789"; char[] ch1 = A.toCharArray(); char[] ch2 = D.toCharArray(); int flag = sc.nextInt(); String input = sc.next(); /*加密过程,当找到字符在A中的位置,输出字典D中对应位置的字符*/ if ((flag == 1)) { for (int i = 0; i < input.length(); i++) { for (int j = 0; j < ch1.length; j++) { if (input.charAt(i) == ch1[j]) System.out.print(ch2[j]); } } } /*解密过程,当找到字符在字典D中的位置,输出A中对应位置的字符*/ if ((flag == 0)) { for (int i = 0; i < input.length(); i++) { for (int j = 0; j < ch2.length; j++) { if (input.charAt(i) == ch2[j]) System.out.print(ch1[j]); } } } } }03_字符串加解密

1、对输入的字符串进行加解密,并输出。2加密方法为:当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;其他字符不做变化。3、解密方法为加密的逆过程。

说明:1、字符串以\0结尾。2、字符串最长100个字符。输入描述:输入一串要加密的密码输入一串加过密的密码输出描述:输出加密后的字符输出解密后的字符示例1输入abcdefgBCDEFGH输出BCDEFGHabcdefg

题目分析

这个题和第二题大同小异,因为要涉及加密解密两个操作,所以我们定义两个字典数组。而且一次要输入两个字符串,就不能一边判断一边输出,因此我们定义两个空字符串来接收加密或解密后的字符。

Java代码实现: import java.util.Scanner; public class 字符串加解密 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str1 = sc.next();// 要加密的字符串 String str2 = sc.next();// 要解密的字符串 String JIA = ""; String JIE = ""; String strA = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; String strB = "bcdefghijklmnopqrstuvwxyzaBCDEFGHIJKLMNOPQRSTUVWXYZA1234567890";//加密字典 String strC = "zabcdefghijklmnopqrstuvwxyZABCDEFGHIJKLMNOPQRSTUVWXY9012345678";//解密字典 char[] ch1 = strA.toCharArray(); char[] ch2 = strB.toCharArray(); char[] ch3 = strC.toCharArray(); //加密过程 for (int i = 0; i < str1.length(); i++) { for (int j = 0; j < ch1.length; j++) { if (str1.charAt(i) == ch1[j]) JIA = JIA + ch2[j]; } } //解密过程 for (int i = 0; i < str2.length(); i++) { for (int j = 0; j < ch2.length; j++) { if (str2.charAt(i) == ch1[j]) JIE = JIE + ch3[j]; } } System.out.println(JIA); System.out.println(JIE); } } 下一篇博客主题:正则表达式


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭