异或^实现数据加密

news2024/9/19 22:20:28

异或是一种二进制的位运算,符号以 XOR 或 ^ 表示。

1.1运算规则

相同为0,不同为1,即

1 ^ 1 = 0

0 ^ 0 = 0

1 ^ 0 = 1

由运算规则可知,任何二进制数与零异或,都会等于其本身,即 A ^ 0 = A。

1.2 异或性质

(1)交换律: A ^ B = B ^ A

(2)结合律: ( A ^ B ) ^ C = A ^ ( B ^ C )

(3)自反性: A ^ B ^ B = A (由结合律可推: A ^ B ^ B = A ^ ( B ^ B ) = A ^ 0 = A)

1.3 加解密字符串

#include <string>
#include <iostream>
 
using namespace std;
 
int key[] = { 1,2,3,4,5,6,7,8};
 
void encryption(string& c, int key[]) {
	int len = c.size();
	for (int i = 0; i < len; i++) {
		c[i] = c[i] ^ key[i % 8];
	}
}
void decode(string& c, int key[]) {
	int len = c.size();
	for (int i = 0; i < len; i++) {
		c[i] = c[i] ^ key[i % 8];
	}
}
 
int main(int argc, char* argv[]) {
	std::string str = "This is raw string!";
	std::cout << "原文:" << str << std::endl;
	encryption(str, key);
	std::cout << "加密后密文:" << str << std::endl;
	decode(str, key);
	std::cout << "解密后密文:" << str << std::endl;
	return 0;
}


 

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

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

相关文章

ZooKeeper技术内幕

从系统模型、序列化与协议、客户端工作原理、会话、服务端工作原理以及数据存储等方面来向揭示ZooKeeper的技术内幕&#xff0c;更深入地了解ZooKeeper这一分布式协调框架。 1、系统模型 将从数据模型、节点特性、版本、Watcher和ACL五方面来讲述ZooKeeper的系统模型。 1.1、…

最新Nmap进阶技术

点击星标&#xff0c;即时接收最新推文 本文选自《web安全攻防渗透测试实战指南&#xff08;第2版&#xff09;》 点击图片五折购书 Nmap进阶 1&#xff0e;脚本介绍 Nmap的脚本默认存在于/Nmap/scripts文件夹下&#xff0c;如图3-71所示。 图3-71 Nmap的脚本主要分为以下几类…

Visio 导出 PDF 文件 图片分辨率被降采样怎么解决

前言 在科研出图中&#xff0c;matlab 绘制图标后续使用 Visio&#xff0c;adobe illustrator&#xff0c;inkscape 相关内容可以参考这里。 此处解决在Visio中对实物图示意图进行标注后&#xff0c;使用Visio另存为&#xff0c; 打印&#xff0c;导出等输出的PDF文档中的图片…

Linux中的dpkg指令(dpkg -l | grep XXX等)

dpkg是Debian包管理系统中的一个工具&#xff0c;用于在Linux系统中安装、升级、删除和管理软件包。它是Debian、Ubuntu以及基于它们的发行版中的包管理器。 dpkg 有很多用法&#xff0c;常用之举例:dpkg -l | grep apt 显示系统中安装的与apt相关&#xff08;命名&#xff09…

MATLAB 2023安装方法之删除旧版本MATLAB,安装新版本MATLAB

说明&#xff1a;之前一直使用的是MATLAB R2020b&#xff0c;但最近复现Github上的程序时&#xff0c;运行不了&#xff0c;联系作者说他的程序只能在MATLAB 2021之后的版本运行&#xff0c;因此决定安装最新版本的MATLAB。 系统&#xff1a;Windows 11 需要卸载的旧MATLAB 版…

DDD中聚合、聚合根的含义以及作用

聚合与聚合根的含义 聚合: 聚合往往是一些实体为了某项业务而聚类在一起形成的集合 &#xff0c; 举个例子&#xff0c; 社会是由一个个的个体组成的&#xff0c;象征着我们每一个人。随着社会的发展&#xff0c;慢慢出现了社团、机构、部门等组织&#xff0c;我们开始从个人变…

计网第四章(网络层)(七)

一、路由信息协议RIP 路由信息协议RIP是互联网中最早使用的协议&#xff0c;他是基于距离向量的。 1.距离向量&#xff1a; RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络距离的记录&#xff0c;这是一组距离&#xff0c;称为“距离向量D-V”。 …

TypeScript的魔法:如何轻松提升JavaScript项目的稳定性

引言&#xff1a;JavaScript的灵活性与挑战 JavaScript&#xff0c;作为Web开发的核心语言&#xff0c;因其灵活性和广泛的应用受到开发者的喜爱。然而&#xff0c;这种灵活性也带来了挑战&#xff0c;尤其是在大型项目中&#xff0c;代码的维护和错误的追踪变得越来越困难。 …

pdf转换成图片免费软件用哪个?pdf转换成图片就用它

随着技术的发展&#xff0c;现在企业办公运用到的电子文档各种各样&#xff0c;我们日常需要掌握的技能越来越高要求&#xff0c;其中pdf和图片是我们经常接触的文件格式之一&#xff0c;而且这两个文件格式我们会经常将它们进行转换&#xff0c;那么pdf转换成图片怎么操作呢?…

JavaScript 复习

第三章 JavaScript 1 JavaScript的起源 在1995年时&#xff0c;由Netscape公司的Brendan Eich&#xff0c;在网景导航者浏览器上首次设计实现而成。Netscape在最初将其脚本语言命名为LiveScript&#xff0c;因为Netscape与Sun合作&#xff0c;网景公司管理层希望蹭Java的热度…

详解Vue 3 的 Composition API

Vue 3 的 Composition API 是一种新的组合式 API 风格&#xff0c;它可以更好地组织和复用组件逻辑。相比于 Vue 2 的 Options API&#xff0c;Composition API 提供了更灵活和可组合的方式来编写组件。 下面是 Composition API 的一些特点和优势&#xff1a; 函数式组件&…

docker与phpstudy两种方式部署wordpress 并 开启伪静态

实际测试&#xff0c;可能是docker内存限制的缘故&#xff0c;docker部署的会比较卡 下载 wordpress phpstudy phpstudy中伪静态配置 伪静态 正常访问 WordPress 文章页的 URL 地址为 http://asa/index.php?p123。变成伪静态就是http://asa/123.html 。 伪静态是相对真实静…

IDEA2021之后没有Show in Explorer,无法直接打开文件夹,被迁移了

2020版本和更早的版本 目录右键之后&#xff0c;可以出现Show in Explorer。 2021版本和更新的版本 快捷键直接到文件的地址 参考文档

CRM线索公海如何管理?

对于销售和CRM客户管理而言&#xff0c;公海线索的管理极为重要&#xff0c;今天本文将告诉大家&#xff1a; 1、如何合理设置公海线索规则和流程&#xff1f;2、手把手教你完成公海管理系统的搭建 关于CRM的公海管理问题&#xff0c;需要根据企业的具体情况和销售流程来设置…

【网络BSP开发经验】Linux gmac驱动调试

文章目录 Linux网络设备驱动简介Linux网卡驱动网络协议接口层网络设备接口层设备驱动功能层网络设备与媒介层linux驱动数据结构linux驱动注册过程网络设备驱动的注册与注销linux驱动数据包收发流程 Linux PHY驱动MDIO接口PHY简介PHY关联过程PHY状态机对端MAC情况&#xff08;接…

多个pdf怎么合并成一个pdf?几个超实用方法分享

多个pdf怎么合并成一个pdf&#xff1f;合并多个PDF文件可以使得它们更容易管理和分享。这特别是那些需要以PDF格式与其他人共享文件的人来说是非常有用的。例如&#xff0c;如果你需要将多个文档或报告打包为一个文件并发送给客户或同事&#xff0c;将它们合并为一个PDF文件是非…

14、监测数据采集物联网应用开发步骤(10)

监测数据采集物联网应用开发步骤(9.2) Modbus rtu协议开发 本章节在《监测数据采集物联网应用开发步骤(7)》基础上实现可参考《...开发步骤(7)》调试工具&#xff0c;本章节代码需要调用modbus_tk组件&#xff0c;阅读本章节前建议baidu熟悉modbus rtu协议内容 组件安装modb…

【同步异步可并发日志系统】设计及实现

1. 项⽬介绍2. 开发环境3. 项目核⼼技术4. 环境搭建5. ⽇志系统介绍5.1 为什么需要⽇志系统5.2⽇志系统技术实现5.2.1 同步写⽇志5.2.2 异步写⽇志 6. ⽇志系统框架设计7. 代码设计7.1 实⽤类设计7.2 ⽇志等级类设计7.3 ⽇志消息类设计7.4 ⽇志格式化输出设计思想7.4.1FormatIt…

OpenLayers7官方文档翻译,OpenLayers7中文文档,OpenLayers快速入门

快速入门 这个入门文档向您展示如何放一张地图在web网页上。 开发设置使用 NodeJS&#xff08;至少需要Nodejs 14 或更高版本&#xff09;&#xff0c;并要求安装 git。 设置新项目 开始使用OpenLayers构建项目的最简单方法是运行&#xff1a;npm create ol-app npm create…

中大许少辉博士后畅销榜《乡村振兴战略下传统村落文化旅游设计》自由营 ​​​

中大许少辉博士后畅销榜《乡村振兴战略下传统村落文化旅游设计》自由营 ​​​