C# 异或加密

news/2024/7/12 3:03:54 标签: c#, 安全, https

原理

加密:使用密钥(2进制)对2进制数据异或运算
解密:使用密钥对加密的二进制数据进行异或运算
例如:

  1. 加密
    对数字1(0001)加密 密钥是2(0010)
    异或运算 同0非1
    0001 0010 异或 得到加密数据 0011
  2. 解密:
    0011 0010 异或 得到解密数据 0001

实例

Student student = new Student();
byte key = 66;//密钥
using (MemoryStream ms = new MemoryStream())
{
    BinaryFormatter binary = new BinaryFormatter();
    binary.Serialize(ms, student);
    byte[] bs = ms.GetBuffer();
    //异或加密
    for (int i = 0; i < bs.Length; i++)
    {
        bs[i] ^= key;
    }
    //存储
    File.WriteAllBytes(Application.dataPath + "/safe.data", bs);
    ms.Flush();
    ms.Close();
}

//解密
byte[] b2 = File.ReadAllBytes(Application.dataPath + "/safe.data");
for (int i = 0; i < b2.Length; i++)
{
    b2[i] ^= key;
}
//反序列化
using (MemoryStream ms = new MemoryStream(b2))
{
    BinaryFormatter binary = new BinaryFormatter();
    Student sss = binary.Deserialize(ms) as Student;
    ms.Close();
}


http://www.niftyadmin.cn/n/1417237.html

相关文章

ibatis - 错误集锦

错误1、apply inline parameterMap a、原因&#xff0c;MAP里面的语句出错。 用前台界面测试&#xff0c;可以看到结果&#xff0c;用单元测试或者其他内部测试只会看到这句错误 解决方案&#xff1a; 有重复的类名&#xff0c;某个xml已经有用到该类名了&#xff0c;不能重复&…

ubuntu 装 mysql

sudo apt-get install mysql-server mysql-client转载于:https://www.cnblogs.com/Alex0111/p/7799694.html

刷新Project目录

编辑器相关代码一般放在Editor文件夹&#xff0c; 打包时Editor文件夹的内容不会被打包编辑器添加自定义菜单项 命名空间 using UnityEditor 特性[MenuItem()] 特性下方为静态函数添加刷新Project目录的菜单项 [MenuItem("刷新/刷新Project目录")]static void Test()…

模块加载器使用场景、设计与实现的进一步思考

不知道上下文的&#xff0c;请先阅读这篇博客&#xff1a;模块加载器获取 URL 的原理 使用场景 为了便于讨论&#xff0c;先做一些约定&#xff1a; 模块原始代码为 S(ource)压缩打包后的模块代码为 C(ompressed)独立文件为 F(ile)内嵌到页面中为 P(page)独立文件中是原始代码时…

GUI 绘制文本

GUI控件在OnGUI函数中绘制&#xff0c;使用GUI控件的脚本要继承MonoBehaviourGUI每帧更新&#xff0c;GUI的原点在屏幕左上角GUISyle 设置自定义样式&#xff1b;GUIContent 包括文本、图片纹理、tooltipGUI.tooltip 返回当前鼠标或键盘选中的控件 对应的tooltip信息GUI.Lable静…

函数地址经典基础C++笔试题(附答案)

PS:今天上午&#xff0c;非常郁闷&#xff0c;有很多简略基础的问题搞得我有些迷茫&#xff0c;哎&#xff0c;代码几天不写就忘。目前又不当COO&#xff0c;还是得用心记代码哦&#xff01; 一、选择题 1. 若用数组名作为函数调用时的实参&#xff0c;则实际上传递给形参的是(…

GUI Toggle

多选框 bool isSel //参数二 表示开关的状态 返回值bool 选中返回true isSel GUI.Toggle(new Rect(5, 5, 100, 30), isSel, “开关”, gUIStyle);单选框 多个开关 只有一个可以处于开启转态 int nowIndex 1; if (GUI.Toggle(new Rect(5, 5, 100, 30), nowIndex 1, “开关”)…

关于Spring配置文件xml文档的schema约束

一&#xff1a;配置文件示例 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans" xmlns:mvc"http://www.springframework.org/schema/mvc" xmlns:tx"htt…