技术标签: 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去获取字符串,不然会有信息损失,导致后面解密失败。
嗯,今天就讲这些,明天继续看书。
主要提供一种解决启动zKServer.cmd闪退的解决思路,遇到类似的问题,都可以采用以下的思路解决。_zkserver.cmd启动闪退
Jason 入门指南 (Introduction to Java Script Object Notation)最近需要跨语言进行一些数据交换,基本数据类型数组之类的交换起来太麻烦。统一将数据编码成Jason字符串进行交换解析。因此研究了一下Json的语法。这里是使用C++和C#直接传递类的复杂的参数。看了下这本书 (Introduction to Java Script Notati
目录第一节 BoxLayout布局管理器介绍第二节 实例演示01 BoxLayout布局管理器介绍BoxLayout是定义在javax.swing包中的另一种常用布局管理器,它将容器中的组件按水平方向排成一行或按垂直方向排成一列。当组件排成一行时,每个组件可以有不同的宽度;当组件排成一列时,每个组件可以有不同的高度。BoxLayout构造方法只有一个,其格式如下。 BoxLayout(...
参考网友 @暖暖的纠结 的按键方法,做了些优化,做了一个方便移植的按键版本。代码如下:头文件#ifndef KEY_DETECT_H#define KEY_DETECT_Htypedef struct{ unsigned char pressdown_flag; //按键按下标志,在中断中置1,key_detect函数中置0 unsigned char short_flag; //短按标志,key_detect中置1,需要手动置0!
首先需要安装ancdonda ,使用conda安装tensorflow你会发现很简单1.创建python2的虚拟环境,创建名字为TensorFlow的虚拟环境conda create -n TensorFlow python=2.72.进入虚拟环境source activate TensorFlow # ($ source deactivate 退出TensorFlow环境..._乌班图系统创建虚拟环境安装tensorflow
https://www.cnblogs.com/ldq2016/p/6223294.html
刻苦的训练我打算最后稍微提一下。主要说后者:什么是有效地训练?我想说下我的理解。很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了。其实,这既不是充分条件、也不会是必要条件。我觉得一般情况下,对于我们普通学校的大学生,各方面能力的差距不会太大,在这种情况下,训练和学习的方法尤为重要。其实,500题仅仅是一个标志,而且仅仅表示你做ACM-ICPC有一定的
由于我们公司统一使用Teams作为通讯工具,所以告警消息需要考虑Teams。一旦线上出现问题,需要调接口来发送Teams消息注意:该方法只能发送到对应的团队频道,而不能实现发送到个人或者是聊天群参考文档:https://docs.microsoft.com/zh-cn/outlook/actionable-messages/send-via-connectors步骤:1. 增加连接器..._自动发消息 给 teams
Joijoi可以用于js对象的规则描述语言和验证器使用的方法:引入joi模块定义对象的验证规则使用joi.validate(par1,par2)方法进行验证。其中第一个参数是要进行验证的对象,第二个参数是对象的验证规则/***********示例代码************/const Joi = require('joi');const schema = { user..._mongoose-sex-page
解决方案:::v-deep .el-table::before { z-index: inherit; }
写在前面准备威胁建模组建虚拟团队四个阶段的结构化思考车联网威胁建模例子1、我们在做什么?为车辆登记功能创建系统模型2、会出什么问题?识别功能威胁3、我们要怎么做?确定威胁的优先级并选择环节措施4、我们做得足够好吗?评估威胁建模过程的有效性附录威胁建模模板参考资料AWS教你如何做威胁建模写在前面 最近的“AWS re:Inforce 2022”介绍了众多的安全、身份和合规的产品和服务,笔者整..._威胁建模样例
简单脱壳EncryptPE 2003.5.18篇 【目 标】:win98s notepad 【工 具】:Olydbg1.1(diy版)、LORDPE、ImportREC1.6F 【任 务】:当然是脱马甲了 【操作平台】:WINDOWS 2000 ADV 【作 者】:loveboom[DFCG] 【相关链接】: 不记得了,自己去搜一下吧。 【简要说明】:今天有点时间,也算是打发一下,不想自己太难过_encryptpe篇