Unity 3D 文件加密下 AES的加密解密使用_unity游戏aes解密_暗光之痕的博客-程序员宅基地

技术标签: C#  Unity进阶  unity3d  文件加密  aes  文本加密  

版本:unity 5.4.1  语言:C#

 

这本书有点蛋疼,说了配置文件的读取之后,他说了两种算法:

//OBFS 加密算法
private static string OBFS(string str)
{
   int length = str.Length;
   var array = new char[length];
   for(int i = 0; i < array.Length; ++i)
   {
        char c = str[i];
        var b = (byte)(c ^ length - i);
        var b2 = (byte)((c >> 8) ^ i);
        array[i] = (char)(b2 << 8 | b);
}
    return new string(array);
}
 
//SHA512 加密算法
private static string GetSHA512Password(string password)
{
   byte[] bytes = Encoding.UTF7.GetBytes(password);
   byte[] result;
   SHA512 shaM = new SHA512Managed();
   result = shaM.ComputeHash(bytes);      
   StringBuilder sb = new StringBuilder();
   foreach(byte b in result)
   {
        sb.AppendFormat("{0:x2}", b);
   }
   return sb.ToString();
}


 

说是加密文件的,但是我根本没看明白,加密文件的话至少也得有解密吧?OBFS这个算法我没查到,不过SHA512是哈希算法,根本不可逆,加密之后怎么解密?

 

看看函数的名字,Password,这就是把用户的密码加密后放到数据库中,然后用户输入密码,再将输入的密码加密,最后两个加密的字符串进行对比的节奏啊。。这不是文件加密啊。。。

 

说完这个之后作者提到了Zip的压缩,但和本章主题根本没有关系吧。

 

网上查到比较有名的加密解密算法就是AES、DES、RC4等。

 

这边提供一下AES的加密解密,C#中已经实现:

public static string myEncrypt(string data)
{
    byte[] bs = Encoding.UTF8.GetBytes(data);
 
    RijndaelManaged aes256 = new RijndaelManaged();
    aes256.Key = Encoding.UTF8.GetBytes("12345678901234567890123456789012");
    aes256.Mode = CipherMode.ECB;
    aes256.Padding = PaddingMode.PKCS7;
 
    return Convert.ToBase64String(aes256.CreateEncryptor().TransformFinalBlock(bs, 0, bs.Length));
}
 
public static string myDecrypt(string data)
{
    byte[] bs = Convert.FromBase64String(data);
 
    RijndaelManaged aes256 = new RijndaelManaged();
    aes256.Key = Encoding.UTF8.GetBytes("12345678901234567890123456789012");
    aes256.Mode = CipherMode.ECB;
    aes256.Padding = PaddingMode.PKCS7;
 
    return Encoding.UTF8.GetString(aes256.CreateDecryptor().TransformFinalBlock(bs, 0, bs.Length));
}


 

注释就不加了,需要注意的是加密后获得的bytes千万别用UTF8去获取字符串,不然会有信息损失,导致后面解密失败。

 

嗯,今天就讲这些,明天继续看书。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012632851/article/details/56682193

智能推荐

MongoDB学习笔记--数据管理_mongoexport -h 192.168.1.233 --port 27018 -d yourd-程序员宅基地

MongoDB数据管理转自:http://www.caiyiting.com/blog/2015/mongodb-data-management.html数据库备份 – mongodump备份本地所有MongoDB数据库: # mongodump -h 127.0.0.1 --port 27017 -o /root/db/alldb备份远程指定数据库:# mongodump -h 192._mongoexport -h 192.168.1.233 --port 27018 -d yourdb -c yourcoll -o /root/you

模拟cmos集成电路(2)_vgs vth vds三者的关系_steven_ifv的博客-程序员宅基地

模拟受PVT的影响;P 工艺 V 电压 T 温度参杂浓度和温度都会影响阈值即VTH 可以将要求匹配的管子放在近的地方 参杂浓度和温度较为接近会有更相近的阈值工艺提供了不同沟道参杂浓度的晶体管 以获得不同的阈值漏极电流在线性区(linear region /triode region)的表达式(推导过程见书)(对于nmos)前半部分又工艺决定 设计的部分是后半部分电路的尺寸和偏置电压ID同时受Vgs和Vds影响 W/L定义为宽长比(aspect ratio设计是考虑 改..._vgs vth vds三者的关系

GitLab 查看上次git commit的记录-程序员宅基地

命令: git log -n *q@s:~/Documents/Practice/sume/test$gitlog-1commitd08b9af30d387102299c533bd3c9f92b505398Author:sume<***.**@qq.com>Date:TueAug2111:59:122018+0800a...

c语言程序设计第五版实验报告九,C语言程序设计实验报告-实验九.doc-程序员宅基地

C语言程序设计实验报告-实验九.doc下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。2.下载的文档,不会出现我们的网址水印。3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。文档包含非法信息?点此举报后获取现金奖励!下载文档到电脑,查找使用更方便9.9积分还剩页未读,继续阅..._第五版c语言指针实验九实验报告总结

Python入门教程100天:Day10-图形用户界面和游戏开发-程序员宅基地

基于tkinter模块的GUIGUI是图形用户界面的缩写,图形化的用户界面对使用过计算机的人来说应该都不陌生,在此也无需进行赘述。Python默认的GUI开发模块是tkinter(在Python 3以前的版本中名为Tkinter),从这个名字就可以看出它是基于Tk的,Tk是一个工具包,最初是为Tcl设计的,后来被移植到很多其他的脚本语言中,它提供了跨平台的GUI控件。当然Tk并不是最新和最好的选择...

C++解PAT A1037 M(双指针+贪心)-程序员宅基地

首先肯定是全局贪心排序,贪心完直接双指针就行了,也没啥大问题。主要是思路先理清楚,先排序处理完一部分数字,然后双指针,一起从尾巴进行配对!

随便推点

基于nginx负载均衡下 Tomcat 集群的 Session 共享-程序员宅基地

一、前言  nginx 作为目前最流行的开源反向代理HTTP Server,用于实现资源缓存、web server负载均衡等功能,由于其轻量级、高性能、高可靠等特点在互联网项目中有着非常普遍的应用,相关概念网上有丰富的介绍。分布式web server集群部署后需要实现session共享,针对 tomcat 服务器的实现方案多种多样,比如 tomcat cluster session 广播、

C语言课程设计报告输出杨辉三角,C语言学习:在屏幕上输出杨辉三角_海蒂的万花镜的博客-程序员宅基地

杨辉三角的规律是:它的两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和。 代码如下:#include#includeint main(){int i,j,k,arr[10][10]={0};/*arr[11][11]必须初始化,初始化为{0}*/printf("打印出杨辉三角:n");for(i=0;i<10;i++){/*先打印出第一列和对角线的数,均为1,同时第一二行已..._杨辉三角课程设计

QT操作文件夹(创建、复制、重命名、移除)_qt 重命名文件夹_~南柯一梦~的博客-程序员宅基地

头文件#include <QDir>#include <QFileInfo>#include <QFile>创建文件夹//************************************// 方法名称: CreateFolder// 概要: 创建文件夹// 返回值: void// 参数: QString folderPath 文件夹路径//************************************void CreateF_qt 重命名文件夹

git(管理项目代码工具)学习笔记总结——是什么有什么用及相关基本常识_git编辑器有什么用_不想想了的博客-程序员宅基地

前言提示:这类工具,像git、maven、IDEA等等,需要理解的知识不是太多。要想熟练使用,理解命令的含义即作用是不够的,需要我们不断的去使用它。 所以本篇作为git学习笔记总结将大概讲解git是什么有什么用及相关基本常识,其他实操还得靠平时。文章目录前言基本介绍(是什么)使用流程(有哪些作用)安装Git创建版本库版本利用管理(类似日志管理)工作区和暂存区(概念了解)撤销修改删除文件添加远程仓库(推上网)从远程库克隆(拉到本地)分支管理创建与合并分支解决冲突多人协作Rebase标签管理(版本号代替_git编辑器有什么用

几种古典密码学算法_古典密码算法有哪些-程序员宅基地

古典密码学可以分为代替密码(也叫做移位密码)和置换密码(也叫做换位密码)两种,其中代替密码典型的有Caesar密码,仿射变换等,置换密码有单表置换和多表置换等。下面是几种常见古典密码算法的实现。1.Caesar密码void encrypt(char* text,int k,char cipher[1024]){ int a[26];int A[26]; int m; for(in_古典密码算法有哪些

数字信号处理(DTFT、DFT、FFT、各种时域到频域的转换的相互关系)_时域到频域转换-程序员宅基地

DTFT、DFT、各种时域到频域的转换的相互关系时域信号与频域的信号的关系采样与奈奎斯特采样定理奈奎斯特采样定理与归一化角频率离散时间信号的傅里叶变换(DTFT)傅里叶变换、拉普拉斯变换、Z变换的联系是什么?离散时间系统时域信号与频域的信号的关系无论是连续的还是非连续的,周期信号用傅里叶级数来表示,非周期信号用傅里叶变换来表示时域信号是连续非周期的,则傅里叶变换后频域信号是连续非周期的时域信号是连续周期的,则傅里叶级数变换后频域信号是离散非周期的时域信号是离散的非周期时间信号,则DTFT之后,其频_时域到频域转换

推荐文章

热门文章

相关标签