C# 文件数据加密以及解密
来源:互联网 发布:淘宝助理字体大小设置 编辑:程序博客网 时间:2024/05/07 21:48
之前做的一个项目上线后听说被破解了,很伤心!赶紧把以前学过的文件加密解密的半吊子赶紧拉出来研究研究。
文件数据加密
public static string AddLock(string info,string lockKey) { byte[] key = UTF8Encoding.UTF8.GetBytes(lockKey); RijndaelManaged rDel = new RijndaelManaged(); rDel.Key = key;//获取或设置对称算法密匙 rDel.Mode = CipherMode.ECB;//获取或设置对称算法模式 rDel.Padding = PaddingMode.PKCS7;//获取或设置对称算法中使用的填充模式 byte[] EncryptorString = UTF8Encoding.UTF8.GetBytes(info); ICryptoTransform cTransform = rDel.CreateEncryptor();//用当前设置好的属性创建对称加密器 //加密 byte[] back = cTransform.TransformFinalBlock(EncryptorString, 0, EncryptorString.Length); //转换为string类型方便存储 string end = System.Convert.ToBase64String(back, 0, back.Length); return end; }
文件数据解密
public static string RemoveLock(string info, string lockKey) { byte[] key = UTF8Encoding.UTF8.GetBytes(lockKey); RijndaelManaged rDel = new RijndaelManaged(); rDel.Key = key;//获取或设置对称算法密匙 rDel.Mode = CipherMode.ECB;//获取或设置对称算法模式 rDel.Padding = PaddingMode.PKCS7;//获取或设置对称算法中使用的填充模式 //创建解密器------注意解密器的属性(密匙,算法模式,填充模式等)需与加密时的一致-- ICryptoTransform cTransform = rDel.CreateDecryptor(); byte[] EncryptorString = System.Convert.FromBase64String(info); //解密 byte[] back = cTransform.TransformFinalBlock(EncryptorString, 0, EncryptorString.Length); //转换为string类型方便使用 string end = UTF8Encoding.UTF8.GetString(back); return end; }
下面在来一段加密解密整理后的代码,懒一点的可以拿出去直接使用。
using UnityEngine;using System.Collections;using System.Security.Cryptography;using System.Text;public static class FileToLock { private static string lockKey = "12340578906543367877723456789012"; private static RijndaelManaged rDel; static FileToLock() { byte[] key = UTF8Encoding.UTF8.GetBytes(lockKey); rDel = new RijndaelManaged(); rDel.Key = key;//获取或设置对称算法密匙 rDel.Mode = CipherMode.ECB;//获取或设置对称算法模式 rDel.Padding = PaddingMode.PKCS7;//获取或设置对称算法中使用的填充模式 } public static string AddLock(string info) { if (string.IsNullOrEmpty(info)) { return info; } byte[] EncryptorString = UTF8Encoding.UTF8.GetBytes(info); ICryptoTransform cTransform = rDel.CreateEncryptor();//用当前设置好的属性创建对称加密器 //加密 byte[] back = cTransform.TransformFinalBlock(EncryptorString, 0, EncryptorString.Length); //转换为string类型方便存储 string end = System.Convert.ToBase64String(back, 0, back.Length); return end; } public static string RemoveLock(string info) { if (string.IsNullOrEmpty(info)) { return info; } //创建解密器------注意解密器的属性(密匙,算法模式,填充模式等)需与加密时的一致-- ICryptoTransform cTransform = rDel.CreateDecryptor(); byte[] EncryptorString = System.Convert.FromBase64String(info); //解密 byte[] back = cTransform.TransformFinalBlock(EncryptorString, 0, EncryptorString.Length); //转换为string类型方便使用 string end = UTF8Encoding.UTF8.GetString(back); return end; }}
这是一个静态类,关于静态类有不清楚的地方可以点击 C# 静态类与非静态类、静态成员的区别,这里就不再多说了。
我来测试一下,我谢了个测试脚本。
using UnityEngine;using System.Collections;public class TestGameData : MonoBehaviour {// Use this for initialization void Start() { string str = "Hello,World!我是要加密的字符串"; Debug.Log("加密之前的字符串 -->" + str); str = FileToLock.AddLock(str); Debug.Log("加密之后的字符串 -->" + str); Debug.Log("解密之前的字符串 -->" + str); str = FileToLock.RemoveLock(str); Debug.Log("解密之后的字符串 -->" + str); }// Update is called once per framevoid Update () { }}
测试结果如下图所示,
结果果然在意料之中,嘿嘿。
其实加密解密还有很多种方式,这只是其中的一种。大家如果有加密解密这一块的博客或者别的,可以留言给我,大家一起交流,一起进步。
0 0
- C# 文件数据加密以及解密
- c#加密解密文件
- c#加密解密文件
- c#加密解密文件
- C#数据加密与解密
- C#加密与解密数据
- C#加密與解密文件
- C# 文件加密解密 SHA256
- C#文件加密和解密
- java_AES加密解密文件以及字符串
- C#中利用DPAPI加密解密数据
- C#数据加密与解密 (2)
- C# 实现 数据加密、解密方法
- Visual C# 加密和解密文件
- C# DES文件加密解密算法
- C#加密解密文件小工具
- c# 用DES加密解密日记文件
- C# 打造文件加密解密工具
- 解决Codeforces访问慢的本地方案
- ASP.NET控件RadioButtonList更改背景色
- poj_2080 计算日期
- HTTP协议中PUT和POST使用上的区别
- 推荐算法简介
- C# 文件数据加密以及解密
- spring mvc 控制器(Controller)中可以返回的类型
- C++语言中的循环语句
- jsp 中对jar 包的引用
- 如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
- http中put和post区别
- 测试一下发表文章
- 姿态解算的一些基本思想
- uboot入门 | 使用 | 学习