首页 > 其他分享 >使用异或操作实现字符串加密与解密

使用异或操作实现字符串加密与解密

时间:2024-09-29 15:50:00浏览次数:10  
标签:codeIndex encrypt demo bytes 解密 demoBytes 异或 加密

异或加密是一种简单而有效的加密技术,它的特点是同一密钥可用于加密和解密,以下是一个例子:

using System;
using System.Text;

public static class Encryption
{
    /// <summary>
    /// bytes数据通过encryptCode进行异或(加密|解密)
    /// 将传入的bytes作为返回值,不再额外分配内存
    /// </summary>
    /// <param name="bytes"></param>
    /// <param name="startIndex"></param>
    /// <param name="length"></param>
    /// <param name="encrypt"></param>
    public static void GetSelfXorBytes(byte[] bytes, int startIndex, int length, byte[] encrypt)
    {
        int codeIndex = startIndex % encrypt.Length;    // 避免codeIndex超上限
        for (int i = startIndex; i < startIndex + length; i++)
        {
            bytes[i] ^= encrypt[codeIndex++];
            codeIndex %= encrypt.Length;                // 避免codeIndex超上限
        }
    }

    public static void Test()
    {
        string demo = "Hello World";
        string encrypt = "密码本";

        byte[] demoBytes = Encoding.UTF8.GetBytes(demo);
        byte[] encryptBytes = Encoding.UTF8.GetBytes(encrypt);

        GetSelfXorBytes(demoBytes, 0, demoBytes.Length, encryptBytes);
        demo = Encoding.UTF8.GetString(demoBytes);
        Console.WriteLine(demo);
        GetSelfXorBytes(demoBytes, 0, demoBytes.Length, encryptBytes);
        demo = Encoding.UTF8.GetString(demoBytes);
        Console.WriteLine(demo);
    }
}

在该代码中,我们做了点小优化,将加密|解密后数据直接存储在bytes中,避免内存浪费。以下是输出结果:
image

标签:codeIndex,encrypt,demo,bytes,解密,demoBytes,异或,加密
From: https://www.cnblogs.com/chenxiayun/p/18440174

相关文章

  • 【Mybatis】Mybatis拦截器+注解,实现敏感数据自动加解密
    一:背景     今天,公司新要求对数据库的敏感数据进行加密,对手机号、身份证号、姓名等一些敏感数据进行加密处理,要求:    1.通过程序实现数据加密解密(快速便捷,尽量减少对原先代码的修改)    2.可以通过sql查询对数据进行解密(通过密钥直接对数据库......
  • 内网IP地址配置SSL证书实现HTTPS加密访问教程
    很多小伙伴需要内网IP地址也实现HTTPS加密,而就目前来说,支持内网IP地址https加密的SSL证书有锐安信、CFCA等,当我们获取到内网IPSSL证书后,需要在服务器(常见类型如Nginx,Apache,Tomcat,IIS等)上完成配置。其实内网IP地址实现https认证的过程与域名SSL证书安装教程类似,我们在前面的教......
  • 公网内网IP地址申请SSL证书实现HTTPS加密指南
    如今,HTTPS已经成为安全保障网站的首要选择,而获得SSL证书则是实现HTTPS加密的先决条件。众所周知,SSL证书能为域名网站实现HTTPS加密,但有些企事业单位的网站仅支持IP地址访问,那么IP地址想要实现HTTPS加密又该如何申请SSL证书呢?公网内网IP地址都可以申请吗?需要哪些条件呢?请看下文......
  • 【DP解密多重背包问题】:优化策略与实现
    文章目录什么是多重背包问题?多重背包问题的数学模型例题多重背包问题Ⅰ多重背包问题Ⅱ总结什么是多重背包问题?多重背包问题是一个经典的组合优化问题。与标准背包问题不同,在多重背包问题中,每种物品可以选择多个,而不是只选择一次。具体来说,给定一个背包的容量和若......
  • Windows 11 24H2新特性解析:优化安装程序与BitLocker加密管理
    Windows1124H2新特性解析:优化安装程序与BitLocker加密管理随着Windows操作系统的不断更新,微软致力于为用户提供更加流畅、安全的系统体验。在最新的Windows1124H2版本中,微软对安装程序进行了显著改进,同时引入了新的安全特性,其中BitLocker加密的变化尤为引人注目。本文......
  • CF2014H Robin Hood Archery(异或哈希)
    题目链接题意Alice和Bob将进行一场射击比赛题解点击查看代码#include<bits/stdc++.h>usingi64=longlong;i64seed=std::chrono::high_resolution_clock::now().time_since_epoch().count();std::mt19937_64rng(seed^std::random_device{}());constexp......
  • APP逆向实战:喜马拉雅(OLLVM混淆,字符串加密)
    喜马拉雅抓包:POST/mobile/login/pwd/v3HTTP/1.1Cookie:1&_device=android&fcecf4c4-5ddc-30e3-86b1-6e675f92bfd0&6.6.99;channel=and-f5;impl=com.ximalaya.ting.android;osversion=29;fp=009527657x2022q22564v0500000000000000000000000000000000000000;devic......
  • SSM大学生网络安全题库系统35ei2 密码MD5加密
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:学生,教师,资料分类,学习资料,安全知识开题报告内容一、研究背景与意义随着互联网技术的飞速发展,网络安全问题日益凸显,成为社会各界关注的焦点。大学......
  • [CL-22] 异或和之和
    CL-22二进制拆分。对于枚举到的每一个二进制位\(i\),注意到其对答案的贡献只有\(0\)和\(2^{i}\)两种情况考虑什么时候贡献是\(2^i\),可以发现,当选入奇数个该位为\(1\)的数之后,对答案的贡献是\(2^{i}\)因此变成求选出奇数个为\(1\)的数的方案数设该位为\(1\)的数有......
  • 【压缩技巧】WinRAR加密:自动加密
    之前介绍了WinRAR技巧中的加密、整理密码功能,今天继续介绍WinRAR加密功能:自动加密。顾名思义,自动加密功能即是为压缩包文件自动添加密码。这可以为需要大量加密压缩包的朋友提高办公效率。一起来学习一下。首先,我们打开WinRAR压缩软件,点击工具栏上方的【选项】–【设置】......