异或运算实现加密解密

异或运算符^,相同为0,不同为1(同0非1)

由异或运算法则可知:a ^ a = 0,a ^ 0 = a

如果c = a ^ b,那么a = b ^ c,即a ^ b ^ b = a,^ 的逆运算仍然是 ^

利用异或运算的性质,对字符进行加密并输出密文,然后再解密
在这里插入图片描述
(1)密码系统

明文空间(全体明文的集合)、密文空间(全体密文的集合)、密钥空间(全体密钥的集合)

加密算法(一组由明文至密文的加密变换)、解密算法(一组由密文至明文的解密变换)

(2)加密算法

  • 对称加密,加密和解密的密钥相同,属于不公开密钥加密算法

  • 非对称加密,加密和解密的密钥不同,属于公开密钥加密算法

  • 发送方使用接收方的公钥加密,只有接收方能解密密文得到明文

    • 私钥加密,持有私钥或公钥才可以解密
    • 公钥加密,持有私钥才可以解密
  • 不可逆加密,加密过程不需要使用密钥,由哈希函数生成信息摘要

(3)信息摘要

一段数据的特征信息

发送方将数据和摘要一起传给接收方

接收方根据接收到的数据重新生成摘要

生成的摘要和接收的摘要相同,则说明数据正确

  • 不同的输入数据,产生不同的信息摘要
  • 单向性,只能由数据生成信息摘要,不能由信息摘要还原数据
  • 不论数据多长,都会产生固定长度的信息摘要
 		char secret = 'A'; // 密钥,加密和解密密钥相同
        char[] plainText = {'草', '船', '借', '箭'}; 
        char[] cipherText = new char[plainText.length];

		// 密文:[茈, 艸, 偞, 篬]
        for (int i = 0; i < plainText.length; i++) {
            cipherText[i] = (char) (plainText[i] ^ secret);
        }
        System.out.println("密文:" + Arrays.toString(cipherText)); 

		// 明文:[草, 船, 借, 箭]
        for (int i = 0; i < cipherText.length; i++) {
            plainText[i] = (char) (cipherText[i] ^ secret);
        }
        System.out.println("明文:" + Arrays.toString(plainText)); 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW船舶自动识别系统

在现代航海领域&#xff0c;安全高效的船舶自动识别系统对于保障航行安全和提高船舶管理效率非常重要。介绍了利用LabVIEW软件开发的一个船舶自动识别系统&#xff0c;该系统通过先进的数据采集和信号处理技术&#xff0c;显著提升了传统自动识别系统的性能。 这个船舶自动识别…

IAR编译和调试CMS32L051

0 Preface/Foreword 0.1 参考文档 中微半导体BAT系列单片机学习笔记_V1.1.pdf 1 配置方法 1.1 编译工具链添加 CMS对于IAR工具&#xff0c;有一个插件文件&#xff0c;用于安装对应的CMS系列芯片。 工具名称&#xff1a;iar_plug20210926.7z 按照完成之后&#xff0c;可…

电脑监控软件都有哪些?哪款好用?

在当今数字化时代&#xff0c;电脑监控软件已经成为企业和个人用户保障信息安全、管理电脑资源的重要工具。市场上存在多种电脑监控软件&#xff0c;每款软件都有其独特的优点和适用场景。本文将为您介绍几款常见的电脑监控软件&#xff0c;并分析哪款更适合您的需求。 绿虫电…

【windows计算md5】

windows计算md5 使用Windows系统自带的certutil命令。在命令提示符中输入“certutil -hashfile 文件路径 MD5”即可计算文件的MD5值。 例如&#xff0c;要计算D盘根目录下的test.txt文件的MD5值&#xff0c; 可以输入certutil -hashfile D:\test.txt MD5

接口测试(jmeter和postman 接口使用)

接口测试基础知识 接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。把前端&#xff08;client&#xff09;和后端&#xff08;server&#xff09;联系起来&#xff0c;测试的重点是要检查数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及系…

7.2、子集求和问题与背包密码系统

7.2、子集求和问题与背包密码系统 一、数学描述 1.1、第一种描述 20 世纪 70 年代末&#xff0c;默克尔和赫尔曼首次尝试将密码系统建立在一个 NP-完全问题上。他们使用了以下数学问题的一个版本&#xff0c;该问题是对经典knapsack问题的概括。 子集和问题 假设你有一个正…

MySQL索引的原理和SQL优化策略

1. 索引 在InnoDB存储引擎中&#xff0c;索引分为聚簇索引和辅助索引两种类型。 聚簇索引是指基于表的主键构建的索引&#xff0c;它决定了表中数据的物理存储顺序。也就是说&#xff0c;聚簇索引中的键值按照主键的顺序来排序&#xff0c;并且每个叶子节点存储的是整个表行的…

关于数组中相邻元素的合并处理方法总结

这两天在开发需求的过程中&#xff0c;需要处理一个数组数据&#xff0c;对相邻元素的具有相同的点合并元素里面的数组。 我们先看一下处理的数组是什么样的。 let array [{name: 数据来源1,list: [{dataCode: 12,dataName: 照片,dataSort: 20,fileList: []}]}, {name: 数据来…

React18-模拟列表数据实现基础表格功能

文章目录 分页功能分页组件有两种接口参数分页类型用户列表参数类型 模拟列表数据分页触发方式实现目录 分页功能 分页组件有两种 table组件自带分页 <TableborderedrowKey"userId"rowSelection{{ type: checkbox }}pagination{{position: [bottomRight],pageSi…

python 实现 macOS状态栏 网速实时显示

安装依赖包&#xff1a; pip install pillow psutil rumpsnetSpeedApp.py from PIL import Image, ImageDraw, ImageFont import psutil import rumpsclass NetSpeedApp(rumps.App):def __init__(self):super(NetSpeedApp, self).__init__("NetSpeed")self.titlese…

【javase】——类和对象

莫道桑榆晚&#xff0c;为霞尚满天。文章目录 面向对象的初步认识面向对象与面向过程什么是面向对象 类的定义和使用类的定义格式 类的实例化什么是实例化类和对象的使用 this引用什么是this引用this 引用的特性。 对象的构造以及初始化如何初始化对象构造方法首先第一&#xf…

喝汽水问题

答案&#xff1a; #include <stdio.h> int main() {int num 0; //可以喝汽水的次数int mon 20; //钱int cup 0; //瓶子数for (mon 20; mon > 0; mon--) //每次花1元钱买汽水喝{num; //可以喝汽水的次数加1cup; //瓶子数加1if (cup 2) //如果瓶子…

Common Mistakes in German

Comman Mistakes in German 1, Haus oder Hause2, ja nein oder doch(1) Positive Fragen(2) Negative Fragen 1, Haus oder Hause 2, ja nein oder doch (1) Positive Fragen (2) Negative Fragen kein / nicht P3

MySQL 可重复读隔离级别,完全解决幻读了吗?

文章目录 前言一、什么是幻读&#xff1f;二、快照读是如何避免幻读的&#xff1f;三、当前读是如何避免幻读的&#xff1f;四、幻读被完全解决了吗&#xff1f;场景1场景2 总结 前言 MySQL InnoDB 引擎的默认隔离级别虽然是「可重复读」&#xff0c;但是它很大程度上避免幻读…

qt内存自动释放的两种情况

qt内存管理机制 QObject的parent 我们时常能看到QWidget或者其他的控件的构造函数中有一项参数parent&#xff0c;默认值都为NULL&#xff0c;例如&#xff1a; QLineEdit(const QString &contents, QWidget *parent nullptr); QWidget(QWidget *parent nullptr, Qt::…

新火种AI|哄哄大模型的火爆,给了普通人AI创业破局的关键

作者&#xff1a;一号 编辑&#xff1a;美美 人们似乎更喜欢把AI当做玩具&#xff0c;而非工具。 近日&#xff0c;一款名为哄哄模拟器的AI原生应用火了&#xff0c;一天之内就吸引了60万用户。 哄哄模拟器设置了多种情侣吵架场景&#xff0c;无论你是男是女&#xff0c;都…

【甲方安全建设】DevOps初体验

文章目录 前言传统的开发方式&#xff1a;Docker-解决环境问题 DevOps-CI/CD走向流水线Jenkins工作流程Git拉取代码Maven构建打包通过SSH连接后端服务器 实现效果 DevSecOps-安全赋能关于安全平台漏洞扫描漏洞预警TODO 前言 临近春节&#xff0c;笔者经过半年北漂&#xff0c;…

基于Springboot的社区疫情防控平台

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 一、项目简介 以往的社区疫情防控管理…

FullStack之Django(2)模型和后台

FullStack之Django(2)模型和后台 author: Once Day date:2022年2月13日/2024年1月31日 漫漫长路&#xff0c;才刚刚开始… 全系列文档请查看专栏: FullStack开发_Once_day的博客-CSDN博客Django开发_Once_day的博客-CSDN博客 参考文档: 编写你的第一个 Django 应用&#…

第三百零一回

文章目录 1. 概念介绍2. 实现方法2.1 obscureText属性2.2 decoration属性 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何实现倒计时功能"相关的内容&#xff0c;本章回中将介绍如何实现密码输入框.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍…