【JavaSE基础】案例-数字加密

C++二位数组进阶 给定两个字符串s1和s2,要求判定其中一个字符串是否是另一字符串通过若干次循环移位后的新字符串的子串。在药房实习期间,小英扎实的专业基础获得了医生的一致好评,得知小英在计算概论中取得过好成绩后,主任又额外交给她一项任务,解密抗战时期被加密过的一些伤员的名单。每位数字都加上5,然后用和乘以10代替该数字,再将奇数位和偶数位交换位置,即第1位和第2位交换,第3位和第4位交换,以此类推。输出:如果一个字符串是另一字符串通过若干次循环移位产生的新串的子串,则输出true,否则输出false。 阅读详情

问题描述:某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,在传递过程中需要加密。加密规则如下:首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,最后将第一位和最后一位数字交换。 请任意给定一个小于8位的整数,然后,把加密后的结果在控制台打印出来。

最终代码如下(详细的需求分析、编码实现过程)

/*
	1、问题描述:
		某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,在传递过程中需要加密。
		加密规则如下:首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,
		最后将第一位和最后一位数字交换。 请任意给定一个小于8位的整数,然后,把加密后的结果在控制台打印出来。 

	2、获取需求:
		实现将用户输入的小于8位正整数字,按照给定的规则加密,并打印出来

	3、分析:
		(1)获取给定的不小于8位的整数
		
		(2)分析主要规定的规则:
			a、原始数据倒序
			b、将每一个数字加上5
			c、和与10取余代替当前数字
			d、首尾数字交换
	
		(3)将所得加密后的数字打印

	4、实现:
		数据结构:采用一维数组,长度为8
		
		规则实现:
		a、原始数据倒序
			拆数:获取各个位置上的数字
				拆数过程中从个位数字开始获取,存储从数组的0索引开始,
				已经实现了数组的逆置
			逆置数组(reverse函数)

		b、将每一个数字加上5
			一维数组的遍历:for循环
			num += 5;

		c、和与10取余代替当前数字
			num %= 10;			
		
		d、首尾数字交换
			实现正整数交换的四种方式
			(1)中间变量temp
			(2)不借助中间变量(+)
			(3)使用按位异或的特点:
				某一数据和同一数据异或两次,数据本身不变
			(4)一句话实现:
				b = (a+b) -(a=b); 可读性很差且代码不规范
	
	5、编码
*/
import java.util.Scanner;

public class JiaMiDemo
{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入原始数据:");
		// 1、获取原始数据
		int data = sc.nextInt();

/*
		// 2、定义数据结构:一维数组
		int[] dataArray = new int[8];
		int count = 0;   // 记录索引位置(数组的实际长度)

		// 3、原始数据倒序
		//		拆数:获取各个位置上的数字
		//			拆数过程中从个位数字开始获取,存储从数组的0索引开始,
		//			已经实现了数组的逆置
		//		逆置数组(reverse函数)
		
		while(data!=0)
		{
			dataArray[count] = data % 10;
			count ++;
			data /= 10;
		}
*/

		// 拆数函数实现2、3
		int[] dataArray = chaiShu(data);

		// 获取数组的实际长度
		int count = dataArray[8];

		/* 4、将每一个数字加上5
				一维数组的遍历:for循环
		   5、和与10取余代替当前数字
		*/
		for(int i=0;i<count;i++)
		{
			dataArray[i] += 5;
			dataArray[i] %= 10;
		}
		
		// 6、首尾数字交换
		int temp = dataArray[0];
		dataArray[0] = dataArray[count-1];
		dataArray[count-1] = temp;

		// 7、实现加密数据的输出
		String jiami="";
		for (int i=0;i<count;i++)
		{
			jiami += dataArray[i];
		}

		System.out.println("加密后的数据是:\n"+ jiami);
	}

	/* 拆数函数:获取各个位置上的数字
		拆数过程中从个位数字开始获取,存储从数组的0索引开始,
		已经实现了数组的逆置
	*/
	public static int[] chaiShu(int num)
	{
		int[] arr = new int[9];
		int index = 0;
		while(num!=0)
		{
			arr[index++]=num%10;
			num/=10;
		}
		// 最后一位存储数组的实际长度
		arr[8] = index;
		return arr;
	}
}
JavaSE系列-08 加密与安全 本文介绍了加密与安全领域的基础知识,主要包括: 编码算法:详细讲解了URL编码和Base64编码的规则及Java实现方式,Base64适用于文本协议传输二进制数据。 摘要算法:阐述了哈希算法的特性(固定输出、碰撞率低等),重点介绍了MD5和SHA系列算法,以及如何通过加盐(salt)增强安全性。 加密算法:概述了对称加密原理,对比了DES、AES等算法的密钥长度和工作模式,特别说明了ECB模式的基本实现方法。 文章通过具体代码示例展示了各种算法的实际应用,为开发人员提供了加密安全技术的实用参考。 阅读详情

相关推荐

达梦数据库配置SSL通信加密

注:执行过程中,当要求输入 cakey.pem 的存储私钥时,请输入“123456”,当要求输入 pkcs.p12 的 export password 时,请务必输入小写的“changeit”。本例设置的密码是123456。生成的ca私钥是ca-key.pem,自签名证书是:ca-cert.pem,都位于C:\OpenSSL-Win64\bin目录下面。是指具备一定资质条件的数字证书签发机构,包含根密钥和根证书, 其核心功能就是通过根密钥和根证书并使用一定的算法来”签发”和”管理”数字证书。

weixin_45699851的博客 4814

学习笔记2-数据加密问题

/* 2:数据加密问题 某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全, 在传递过程中需要加密,加密规则如下: 首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字, 最后将第一位和最后一位数字交换。 请任意给定一个小于8位的整数, 然后,把加密后的结果在控制台打印出来。 */ package Demo; im...

Yaker一些事一些情 629

本体(Ontology)概述

认识本体        本体(Ontology)的概念源自于哲学领域,在哲学中的定义为“对世界上客观事物的系统描述,即存在论”。哲学中的本体关心的是客观现实的抽象本质。而在计算机领域,本体可以在语义层次上描述知识,可以看成描述某个学科领域知识的一个通用概念模型。德国学者Studer在1998年给出了本体的相关定义“本体是共享概念模型的形式化规范说明”。这个定义包含了四层含义:即共享(share)...

baijinswpu的博客 7万+

一个有关数据加密的小练习题。

数据加密问题 某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,在传递过程中需要加密,加密规则如下: 首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字, 最后将第一位和最后一位数字交换。 请任意给定一个小于8位的整数, 然后,把加密后的结果在控制台打印出来。 思路一: 先将要进行加密的数字给写死,初始值给定,然后取到每个数据,再进行一步一步的操作: 题目要求: 1、数据是小于8位的整数 int num = 123456 2、加密的规则: 1)首先将数据倒叙 6543

啊帅和和的博客 1349

IPD实战指南:如何运用SPAN模型精准定位高潜力市场并优化资源配置

本文是IPD实战指南,详细解析了如何运用SPAN模型进行市场分析与战略决策。文章通过四步实战法,指导企业科学定义细分市场、量化评估吸引力与竞争力,并绘制矩阵以制定精准的资源配置策略,从而跳出红海竞争,将资源聚焦于高潜力市场。

weixin_29306317的博客 75

拯救者Y9000P 2022双系统实战:Ubuntu22.04分区优化与驱动避坑指南

本文提供联想拯救者Y9000P 2022款安装Ubuntu 22.04双系统的详细实战指南。重点讲解针对该机型的磁盘分区优化方案、NVIDIA显卡驱动安装避坑技巧,以及安装后的网络、时间同步等必备配置,帮助用户高效完成双系统部署并提升使用体验。

weixin_29208327的博客 424

java实现数据加密问题

java实现数据加密问题 package Array; import java.util.Scanner; /*某个公司采用电话传递数据信息,数据是小于8位的整数,为了确保安全, * 在传递过程中需要加密,加密规则如下: * 首先将数据倒序,然后将每位数字都加上5,在用和除以10的余数来代替改数字, * 最后将第一位和最后一位数字交换,请任意给定一个小于八位的整数 * ...

qq_42554719的博客 747

【数据集总结】不透水面积ISA:GAIA、CLUD-Urban、GISA

【数据集总结】不透水面积ISA:GAIA、CLUD-Urban、GISA

WW、forever的博客 2158

数组排列计算

/* 数组习题: 数组加密=某个公司用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,在传递过程中需要加密。 加密规则如下: 首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字。 最后将第一位和最后一位数字交换。 请给定一个小于8位的整数,然后将加密后的结果在控制台打印出来。 eg: 643689 一大堆计算:198134 498131 提示:

lixin412524的专栏 586

iOS远程真机之WebDriverAgent 天坑记

一、WDA安装依赖报错:       这个东西神坑,我搞了一天都没找到解决方案,最后在appium讨论中发现,       解决方案是:       先定位到WebDriverAgent 所在路径$ cd /Users/XXXX/git/WebDriverAgent        然后运行:mkdir -p Resources/WebDriverAgent.bundle sh ./Scripts/b

甫式人生 7316

android 9.0Settings休眠时间项(屏幕超时)添加永不休眠功能

在9.0的系统产品开发中,系统中默认息屏时间为1分钟,可以通过在Setting中的息屏时间选项设置对应的息屏时间,但是在开发平板类的产品中,需要实现永不休眠的功能,所以需要在Settings中的息屏时间中添加永不休眠时间这一项来实现这个功能,接下来看息屏时间的相关功能,来添加这个功能

安卓兼职framework和app工程师的博客 2056

【bug记录】【JavaSE】数字加密案例

   2018年6月11日: 某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,    在传递过程中需要加密,加密规则如下:        首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,        最后将第一位和最后一位数字交换。 请任意给定一个小于8位的整数,        然后,把加密后的结果在控制台打印出来。老师的答案如下:/* 某个公司采...

qq_40675879的博客 301

【异常】Milvus 向量数据库字段缺失错误分析与解决 MilvusVectorStoreServiceV2 - Failed to insert batch [0-1]: The field:

本文分析了Milvus向量数据库插入操作中出现的字段缺失错误。错误显示age_mode字段未提供,导致批量插入失败。根本原因是Milvus Schema要求所有定义字段必须存在,但代码中对部分字段采用条件添加方式。解决方案是将条件添加改为始终添加,为可能为null的字段提供空字符串默认值。文章总结了Schema约束、防御性编程等经验,并建议通过Schema变更检查、单元测试覆盖和数据校验层等预防措施避免类似问题。该问题影响product、mac、source等多个字段,修改后确保了数据插入的可靠性。

奶爸的编程之路,也就一周冷个三天 407

JavaSE基础

JavaSE基础 Java语言概述 一、计算机语言概述 软件 & 开发 人机交互 & 计算机语言 概述 & 架构 二、JVM Java虚拟机,将字节码解析成具体平台上的机器语言。 三、JRE & JDK JDK包含JRE,JRE包含JVM。 四、JDK 下载与安装 JDK命令行工具 dos命令行工具 五、环境配置 配置 配置技巧 临时配置方...

GoslingBoy的专栏 784

路径规划 | 图解RRT*算法(附ROS C++/Python/Matlab仿真)

RRT*算法针对传统RRT算法进行了渐进最优改进,在添加节点到搜索树的过程中进行重连选择。本文图解RRT*算法原理,并采用ROS C++、Python、Matlab三种语言实现算法,加深理解

FRIGIDWINTER的博客 9405

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

JavaSE(十一)加密与安全

加密算法:   加密分为可逆加密(双向加密)和不可逆加密(单向加密),可逆的加密可以由明文得到密文,也可以由密文得到明文,而不可逆的加密只能由明文得到密文。   加密算法也可以分为无密钥的算法和有密钥的算法,无密钥的算法只有在算法保密的前提下才是安全的,有密钥的算法只有算法和密钥同时泄密才会变得不安全。其实不可逆加密md5和可逆加密base64这些算法都是无密钥的,如果只有通信双方才知道这两种算法...

墨香院 8315

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

零基础自学javase黑马课程第十三天

/1.得到一个随机数对象,用于得到随机数//2.创建一个Scanner对象,用于接收用户输入的数据System.out.println("请您输入您的年龄:");}}

qq_46272491的博客 2188

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【JavaSE】【网络协议】HTTPS

HTTPS工作流程

yj20040627的博客 5278

【JAVA基础】专题课(综合案例下)

​案例4.数组元素复制。

Javascript_tsj的博客 530

简单的数据加密算法的实现(JavaSE)

先看一下子题目的要求,类似的思路大概都是这样子 首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代表该数字,最后将第一位和最后一位数字交换请给定任意一个小于8位的整数,然后,将加密后的结果在控制台打印出来 思路:让使用者输入一串数字进行加密,然后用nextLine()方法获得到该数字的字符串类型,然后将其转换为数组(直接用splite(""))就可以直接进行操作,利用数组进行倒序,然后再进行交换. 代码就偷懒不加注释了,都是很简单的方法进行处理,加油一起努力学下去吧!!! 大致代码如下: pub

xiaole060901的博客 525

JAVA-SE基础篇-文件的加密与解密举例

JAVA-SE基础篇-文件的加密与解密 基本实现的方法 可以改进 public class TestStream02 { public static void main(String[] args) { File encodingFile=new File("d:\\IO\\baobao.txt"); //创建一个加密后的文件和名字 File encodedFile=new File...

Make-菜鸡 3万+

JavaSE结合案例的学习1-0216

案例一:买飞机票 需求: 机票按照淡季旺季头等舱和经济舱收费、输入机票原件、月份和头等舱或经济舱 按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11-4月)头等舱7折,经济舱6.5折。 自写版: import java.util.Scanner; public class PlaneTicket { public static void main(String[] args) { Scanner ns = new Scanner(Syste

Ponnny的博客 238

密码学课程设计——多人加密聊天系统

实验设计要求: 模块: 用户认证:数字签名方案 信息加密:公钥加密方案 信息隐藏:LSB方案 要求: 实现登陆验证,信息发送和接收(文本和图片),信息加密解密,信息签名和签名验证 关键代码解释说明: 1.数字签名:使用java security包中的keypairgenerator 生成rsa秘钥对,长度为512: 2.获取秘钥对中的publicexponent,modulu...

Sukiugg的博客 4541

《JavaSE 基础知识点速记(搞笑版)— 你的 Java 小白 也能秒懂》

路径说明JDK开发工具包,内含javacjavadocjd等JRE运行时环境,单独部署可执行.jarJVM虚拟机,执掌.class# 验证安装TIP:若你想减肥到JDK 19,记得把JAVA_HOME指向新安装路径,别再用旧's Q寒冬`。

m0_62724751的博客 613

【JavaSE-网络部分12-完结】网络原理-HTTPS协议的详细原理介绍【应用层】

HTTPS = HTTP + TLS,用对称加密传业务数据(快),用非对称加密传对称密钥(安全)。核心难题是公钥可能被中间人掉包,解决方案是数字证书:CA 用私钥对证书签名,客户端用内置 CA 公钥验签,通过才信任公钥。Fiddler 抓包靠的是你主动安装它的证书,本质上是你许可的中间人攻击。

弹简特的博客,步履不停,持续学习,多尝试,多复盘,多沉淀。 7275

JavaSE01

JavaSE基础 1.String String的特点:String类型也就是我们所谓的"字符串类型" 字符串类型是不可改变的,字符串引用变量可以改变 在基本类型(8个)用比较值的大侠 在引用变量中-==比较的是:是否指向同一个对象或者是否指向同一个常量池 public class DemoString { public static void main(String[] args) { String s1 ="ABC"; String s2 = s1; String s3 = "ABCDEF

Judith__的博客 4891
上一篇: 【JavaSE基础】专题-拆数
下一篇: 【JavaSE基础】专题-递归
老坛算粉
博客等级 码龄12年 708粉丝 73原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老坛算粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值