JAVA中队列,栈的使用@凯撒加密算法@后缀表达式

在这里插入图片描述

凯撒加密算法

在看数据结构的时候,发现讲到了一个凯撒加密,于是就百度了解一下,它是加密算法的一种,原理大概就是首先得有一个密钥,它是用来对消息进行加密的,那么怎么加密呢,最原始的时候就是密钥为一个数字,假设为a因为你发过来的是一个字符串,于是我就对字符串的每个元素,或者说字母移动a个元素,举个例子,假如传过来的消息为"hello",a为1,那么加密之后的字符应该为"gfmmp", 但是这有个很明显的漏洞,因为你最多有26种移动方式,所以这种算法很快就被淘汰了,对它的改进是我可以用一个数组,存储数个密钥,对每个元素进行分别的加密,看一下下面的例子:
在这里插入图片描述这种就是改进后的凯撒算法,可能有人会问为什么会有加密算法呢,大家知道,在网络传输的时候,消息是从一端发出,另一段收到,如果是请求或者命令的话,如果被黑客在网络传输的过程中截获,然后改成另一项命令,这就很危险,所以需要对我们传输的信息进行加密,即使他截获也无法理解其中的意思。

队列

其实队列没有什么讲的,它就是一种数据结构,或者说准确的说是一种线性集合,采用FIFO(first in first out)的存储方式,你可以将队列看成一个管道,两头都是开的,元素从管道的一头进入,另一头出去,JAVA中有专门的Queue接口进行这种数据的处理,而且JAVA中还比较强大,对于Queue好像还有因线程安全问题的产生有不同的实现类,这里就不细分了,使用方法的话网上有,你只要记住队列是FIFO就行,然后给一个例子,是关于上面讲到的凯撒加密算法的实现:
cipher类

package com.mec.cipher.core;

import java.util.LinkedList;
import java.util.Queue;

public class Cipher {
   
	public StringBuilder sb;
	public StringBuilder sbu;
	public String decoded;
	public Queue<Integer> keyqueue1;
	public Queue<Integer> keyqueue2;
	
	public Cipher() {
   
			int[] key = {
   9,5,7};
			//这儿需要使用两个Queue。
			 keyqueue1 = new LinkedList<>();
			 keyqueue2 = new LinkedList<>();
			 for(int i = 0;i < key.length;i++) {
   
				 keyqueue1.add(key[i]);
				 keyqueue2.add(key[i]);
			 }
		}

//	利用密钥对明文进行加密
	public StringBuilder encode(String message){
   
			StringBuilder sb = new StringBuilder();
			char[
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值