在线教育网站开发实例爱网站无法登录怎么回事

web/2025/10/4 18:51:49/文章来源:
在线教育网站开发实例,爱网站无法登录怎么回事,销售用什么软件找客户,网站开发页面hi#xff0c;大家好#xff0c;今天开始我们来介绍一下对称加密算法中的AES算法。 AES简介 AES#xff08;英语#xff1a;Advanced Encryption Standard#xff0c;缩写#xff1a;AES#xff09;#xff0c;即高级加密标准#xff0c;在密码学中又称Rijndael加密…hi大家好今天开始我们来介绍一下对称加密算法中的AES算法。 AES简介 AES英语Advanced Encryption Standard缩写AES即高级加密标准在密码学中又称Rijndael加密法是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES已经被多方分析且广为全世界所使用。经过五年的甄选流程高级加密标准由美国国家标准与技术研究院NIST于2001年11月26日发布于FIPS PUB 197并在2002年5月26日成为有效的标准。2006年AES算法已然成为对称密钥加密中最流行的算法之一。严格来说 AES 是一种通用的加密标准通常我们常说的 AES 算法是指 AES 标准的实现算法Rijndael 算法。 Rijndael 算法 NIST 在 1997 年 09 月 12 日公开征集更高效更安全的替代 DES 加密算法第一轮共有 15 种算法入选其中 5 种算法入围了决赛分别是 Rijndael、Serpent、Twofish、RC6 和 MARS。经过 3 年的验证、评测及公众讨论之后 Rijndael 算法最终入选。 Rijndael 算法是一个分组密码算法族其分组长度包括 128 比特、160 比特、192 比特、224 比特、256 比特密钥长度也包括这五种长度。 AES 标准算法是选取了分组长度为 128 比特密钥长度为 128 比特、192 比特和 256 比特的三个版本名称分别为 AES-128、AES-196 和 AES-256这三个版本加密思路基本一样只是密钥扩展算法的过程会稍有不同。 AES的基本结构 AES为分组密码分组密码也就是把明文分成一组一组的每组长度相等每次加密一组数据直到加密完所有组。在AES标准规范中分组长度只能是128位也就是说每个分组为16个字节。密钥的长度可以使用128位、192位或256位。密钥的长度不同推荐加密轮数也不同。如下表所示 算法密钥长度bit分组长度bit加密轮数AES-12812812810AES-19219212812AES-25625612814 AES算法原理 AES算法主要有四种操作处理分别是 密钥加法层 (也叫轮密钥加英文Add Round Key)字节代换层 (SubByte)行位移层 (Shift Rows)列混淆层(Mix Column) AES算法的明文和密钥都是由16个字节组成的数据(当然密钥还支持192位和256位的长度这里暂不讨论)它是按照字节的先后顺序从上到下、从左到右进行排列的。而加密出的密文读取顺序也是按照这个顺序读取的相当于将数组还原成字符串的模样了然后再解密的时候又是按照4x4数组处理的。AES算法在处理的轮数上只有最后一轮操作与前面的轮处理上有些许不同(最后一轮只是少了列混淆处理)在轮处理开始前还单独进行了一次轮密钥加的处理。在处理轮数上我们只考虑128位密钥的10轮处理。接下来就开始一步步的介绍AES算法的处理流程了。 AES算法流程图: 密钥加法层 (Add Round Key) 在密钥加法层中有两个输入的参数分别是明文和子密钥k[0]而且这两个输入都是128位的。k[0]实际上就等同于密钥k具体原因在密钥扩展生成中进行介绍。我们前面在介绍扩展域加减法中提到过在扩展域中加减法操作和异或运算等价所以这里的处理也就异常的简单了只需要将两个输入的数据进行按字节异或操作就会得到运算的结果。图示 字节代换层 (SubByte) 字节代换层的主要功能就是让输入的数据通过S_box表完成从一个字节到另一个字节的映射这里的S_box表是通过某种方法计算出来的具体的计算方法在此不做详述我们主需要知道如何使用S_box结果即可。S_box表是一个拥有256个字节元素的数组可以将其定义为一维数组也可以将其定义为16·16的二维数组如果将其定义为二维数组读取S_box数据的方法就是要将输入数据的每个字节的高四位作为第一个下标第四位作为第二个下标略有点麻烦。这里建议将其视作一维数组即可。逆S盒与S盒对应用于解密时对数据处理我们对解密时的程序处理称作逆字节代换只是使用的代换表盒加密时不同而已。 S盒 逆S盒 加密图示 行位移 (Shift Rows) 行位移操作最为简单它是用来将输入数据作为一个4·4的字节矩阵进行处理的然后将这个矩阵的字节进行位置上的置换。ShiftRows子层属于AES手动的扩散层目的是将单个位上的变换扩散到影响整个状态当从而达到雪崩效应。在加密时行位移处理与解密时的处理相反我们这里将解密时的处理称作逆行位移。它之所以称作行位移是因为它只在4·4矩阵的行间进行操作每行4字节的数据。 **加密时**保持矩阵的第一行不变第二行向左移动8Bit(一个字节)、第三行向左移动2个字节、第四行向左移动3个字节。 **解密时**保持矩阵的第一行不变第二行向右移动8Bit(一个字节)、第三行向右移动2个字节、第四行向右移动3个字节。 正向行位移图解: 逆向行位移图解: 列混淆(MixColumn) 列混淆子层是AES算法中最为复杂的部分属于扩散层列混淆操作是AES算法中主要的扩散元素它混淆了输入矩阵的每一列使输入的每个字节都会影响到4个输出字节。行位移子层和列混淆子层的组合使得经过三轮处理以后矩阵的每个字节都依赖于16个明文字节成可能。其中包含了矩阵乘法、伽罗瓦域内加法和乘法的相关知识。 AES 算法实现 随机生成AES 密钥 /*** 生成随机AES密钥,密钥长度128位** return AES明文密钥Base64字符串*/ public static String genAesRandomKey2Base64Str() {return Base64.encodeBase64String(genAesRandomKey()); }/*** 生成随机AES密钥,密钥长度128位** return AES明文密钥字节数组*/ public static byte[] genAesRandomKey() {KeyGenerator keygen null;try {keygen KeyGenerator.getInstance(AES_ALGORITHM);} catch (NoSuchAlgorithmException e) {throw new RuntimeException(genarateRandomKey fail!, e);}SecureRandom random new SecureRandom();keygen.init(random);Key key keygen.generateKey();return key.getEncoded(); }AES 加密 /*** AES 加密** param data 待加密密内容* param key 加密密钥* return*/ public static byte[] encrypt(byte[] data, byte[] key) {if (key.length ! 16) {throw new RuntimeException(Invalid AES key length (must be 16 bytes));}try {SecretKeySpec secretKey new SecretKeySpec(key, AES_ALGORITHM);// 创建密码器Cipher cipher Cipher.getInstance(AES_CIPTHER);cipher.init(Cipher.ENCRYPT_MODE, secretKey);byte[] result cipher.doFinal(data);return result;} catch (Exception e) {throw new RuntimeException(encrypt fail!, e);} }AES 解密 /*** AES 解密** param data 待解密内容* param key 解密密钥* return*/ public static byte[] decrypt(byte[] data, byte[] key) {if (key.length ! 16) {throw new RuntimeException(Invalid AES key length (must be 16 bytes));}try {SecretKeySpec secretKey new SecretKeySpec(key, AES_ALGORITHM);// 创建密码器Cipher cipher Cipher.getInstance(AES_CIPTHER);cipher.init(Cipher.DECRYPT_MODE, secretKey);byte[] result cipher.doFinal(data);return result;} catch (Exception e) {throw new RuntimeException(decrypt fail!, e);} }查看完整代码请访问 https://github.com/ForTheDevelopers/JavaSecurity 应用场景 由于AES算法效率较高一般用于对效率有要求的实时数据加密通信。比如在使用 VPN 或者代理进行加密通信时既要保证数据的保密性又要保证不能有高的延迟所以通常会使用AES算法。 另外在实际应用中通常AES和RSA算法结合使用一方面确保了密钥的安全性另一方面又保证了加密的效率。后面我们会专门详细介绍这一部分的内容。 总结 AES算法由于其安全性高加密速度快可以处理大量加密数据等特性而被广泛使用AES由于也属于对称加密算法所以也涉及分组及填充模式的选择大家可以参考上一篇文章。另外也欢迎大家关注我们的公众号回复【加解密】获取本系列的全部源码。 参考 1AES算法详解 全性高加密速度快可以处理大量加密数据等特性而被广泛使用AES由于也属于对称加密算法所以也涉及分组及填充模式的选择大家可以参考上一篇文章。另外也欢迎大家关注我们的公众号回复【加解密】获取本系列的全部源码。 参考 1AES算法详解 创作不易如果大家喜欢本文欢迎点赞转发你的关注是我们继续前进的动力_ 关于作者 GitHubhttps://github.com/ForTheDevelopers 掘金https://juejin.cn/user/1204720472953022/posts CSDNhttps://blog.csdn.net/ForTheDevelopers segmentfaulthttps://segmentfault.com/u/for_the_developers 联系作者 微信号ForTheDeveloper 公众号ForTheDevelopers

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86933.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在线教学网站建设个人博客网页制作图片

ARC就是圆弧走线的意思: 仅打开网络的话可以只针对net进行修改走线的属性: 然后现在鼠标左键点那个走线,那个走线就会变为弧形: 添加差分对: 之后,分别点击两条线即可分配差分对: 选完差分对之后…

蛋糕公司网页设计模板网站关键词优化难不难

高考中,向量小题常从以下几个方面来考查:1、平面向量的有关概念与平面向量的线性运算,主要考查向量的加法、减法运算,考查向量的数乘运算及其几何意义。2、考查平面向量的坐标:主要考查平面向量基本定理及其意义&#…

wordpress 站群模板wordpress插件有api吗

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…

网站推广策划的流程深圳招聘官网

Spock是一个Java测试框架,由GradleWare的软件工程师Peter Niederwieser于2008年创建,它可以促进BDD的发展。 利用这个 例如 ,一个故事可以定义为: Story: Returns go to stockAs a store owner In order to keep track of stock…

广州制作网站seowordpress 页面评论 调用

引言 随着互联网的发展和智能设备的普及,Web应用成为了主流的应用开发方式之一。然而,有些场景下仍然需要使用桌面应用来满足特定的需求。为了结合Web技术和桌面应用的优势,Golang提供了一种名为"WebView"的库,它可以帮…

机械配件东莞网站建设网站的尾页要怎么做

黑马程序员前端AJAX入门到实战全套教程,包含学前端框架必会的(ajaxnode.jswebpackgit),一套全覆盖 Day1 你好,我是Qiuner. 为帮助别人少走弯路和记录自己编程学习过程而写博客 这是我的 github https://github.com/Qiuner ⭐️ ​…

兰州网站优化seo网站开发 语音输入

文章目录 前言1 字符串类型的数据结构组成2 为什么要这么设计数据结构?3 为什么说字符串类型不可修改?4 如何实现字符串的修改?5 为什么字符串修改的字面量用单引号?6 如何判断字符串的修改新建了一个字符串?7 字符串的…

织梦手机网站模板每天做任务得钱的网站

2019独角兽企业重金招聘Python工程师标准>>> 续前文装好chrome后,yum居然用不了,提示错误“Basic XLib functionality test failed!” 呵呵。。。呵呵了.... 【题外话~个人真心觉得pythonseleniumchrome在linux环境下开发和使用 简直蛋疼无比…

免费建站源码无极网

2019独角兽企业重金招聘Python工程师标准>>> 这个异常有下面几种情况 1、你写的 EL 表达式有语法错误。 2、再者就是你取得变量是多级的话比如 student.address.prevince 属性model 关联有问题。 3、还有就是你取得值为空(null) 比如 Thymel…

泰州网站设计公司国外做美食视频网站

以前出差时在机场用过无线网络,小区内是否也有无线网络呢?随便一搜,果然有几个无线网络信号,于是打起了免费蹭网的主意,但信号最好的几个网络的WEP或WPA密码成为了一个门坎,于是在公司上网查到相关资料&…

会员网站模板wordpress手机app主题

https://leetcode.cn/problems/binary-tree-preorder-traversal/ 这道题目需要我们自行进行创建一个数组,题目也给出我们需要自己malloc一个数组来存放,这样能达到我们遍历的效果,我们来看看他的接口函数给的是什么。 可以看到的是这个接口函…

国内外高校门户网站建设的成功经验与特色分析wordpress 极简博客

目录 1.初识MQ1.1.同步调用1.2.异步调用1.3.技术选型 2.RabbitMQ2.1.安装2.2.收发消息2.2.1.交换机2.2.2.队列2.2.3.绑定关系2.2.4.发送消息 2.3.数据隔离2.3.1.用户管理2.3.2.virtual host 1.初识MQ 1.1.同步调用 之前说过,我们现在基于OpenFeign的调用都属于是同…

网站开发与应用 大作业作业如何评价小米的网站建设

数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果。轻则程序逻辑出现BUG,重则程序崩溃,数据丢失。造成数据丢失的原因,主要有程序错误、人为错误、计算机失败、磁盘失败、灾难(如起火、地震)和偷窃。数据库日常备份工…

高网站建设网站开发环境分析

目录 🌷1、JVM是什么? 🌷2、JVM的执行流程(能够描述数据区5部分) 🌷3、JVM类加载过程 🌷4、双亲委派机制:描述类加载的过程 问题1:类加载器 问题2:什么…

长沙一键建站系统北京SEO网站优化公司

给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 示例 1: 输入: 1 输出: true 解释: 20 1 示例 2: 输入: 16 输出: true 解释: 24 16 示例 3: 输入: 218 输出: false 解法一: class Solution { public:bool isPowerOfTwo(int n) {return(n >…

建设银行网站进不去电子商务网站建设的试卷

1、初始化列表 初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。 class Date { public:Date(int year, int month, int day): _year(year), _month(month), _…

美橙互联 网站备案家居网站建设的背景及意义

Leetcode刷题之删除链表中等于给定值 val 的所有结点 一、题目描述二、题目解析 一、题目描述 Leetcode刷题之删除链表中等于给定值 val 的所有结点 二、题目解析 本题中我们需要将链表中等于val的值的节点删除,首先我想到的方法是通过暴力求解解决,…

南通seo公司网站广东深圳网站建设微信商城运营

1.回撤流定义(RetractStream) Flink 的回撤流是指在 Flink 的流处理算法中,撤回已经发送到下游节点的数据。这是因为在实际应用场景中,有些错误数据可能会发送到下游节点,因此需要回撤流以保证数据的准确性。 回撤流…

饮料公司网站模板环保局网站建设

目录 一、j2mod 二、Modbus4J 三、Jamod 在Java中,有几个流行的库可以用于实现Modbus协议以读取设备数据。以下是一些常用的库: 一、j2mod 这是jamod Modbus库的一个分支,取自1.2.1版本,根据Apache 2许可证发布,包…

建立企业网站 优帮云外包加工官网

考勤机数据无法同步最后更新于:2020-06-29 15:27:45请先参考以下操作指南确保考勤机正确安装:http://help.ihr360.com/time_machine.html如果安装后仍出现数据无法同步的问题,则建议按下面步骤排查:首先在时间管理-时间设置-考勤机…