自己创造一个格式,自定义文件后缀名


YES-CMS内容管理系统开发记录

插件导出想自创一个自定义格式,*.yesp,实际放入的是json字符串,但是希望不能用记事本打开(增加神秘感[手动滑稽])

自定义一个文件扩展名,打造一个输入自己的扩展名文件,自定义一个文件后缀名,并且对文件进行加密保存

指定后缀名

这个好办,后缀名指定一下就行,

文件流加密

废话不多说,直接上代码,

对象转json字符串,

然后对字符串进行加密,返回byte[]

byte[]直接写入文件

C# 全选
string fileName ="C:\\" + plugin.pluginName + ".yesp";

// 文件中内容
string content = Newtonsoft.Json.JsonConvert.SerializeObject(plugin);

// 加密
byte[] buffer= Encrypt(content);
FileStream fs = new FileStream(fileName, FileMode.Create);
fs.Write(buffer, 0, buffer.Length);
fs.Dispose();

 

加密和解密方法如下:

C# 全选
using System.IO;
using System.Security.Cryptography;
using System.Text;

namespace YESCMS.Libs
{
    public class FileEntryHelper
    {
        /// <summary>
        /// Des默认密钥向量
        /// </summary>
        static byte[] DesIv = { 0x10, 0x40, 0x66, 0x80, 0x70, 0xCB, 0xAD, 0xEF };
        /// <summary>
        /// Des加解密钥必须8位
        /// </summary>
        const string DesKey = "iyes2123";
        public static byte[] Encrypt(string source)
        {
            using (DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider())
            {
                byte[] rgbKeys = Encoding.UTF8.GetBytes(DesKey);
                byte[] rgbIvs = DesIv;
                byte[] inputByteArray = Encoding.UTF8.GetBytes(source);
                using (MemoryStream memoryStream = new MemoryStream())
                {
                    using (CryptoStream cryptoStream = new CryptoStream(memoryStream, desProvider.CreateEncryptor(rgbKeys, rgbIvs), CryptoStreamMode.Write))
                    {
                        cryptoStream.Write(inputByteArray, 0, inputByteArray.Length);
                        cryptoStream.FlushFinalBlock();
                        // 1.第一种
                        return memoryStream.ToArray();

                    }
                }
            }
        }
        public static string DecryptDes(Stream stream)
        {
            using (DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider())
            {
                byte[] rgbKeys = Encoding.UTF8.GetBytes(DesKey);
                byte[] rgbIvs = DesIv;

                stream.Seek(0, SeekOrigin.Begin);
                byte[] inputByteArray = new byte[stream.Length];
                stream.Read(inputByteArray, 0, inputByteArray.Length);

                using (MemoryStream memoryStream = new MemoryStream())
                {
                    using (CryptoStream cryptoStream = new CryptoStream(memoryStream, desProvider.CreateDecryptor(rgbKeys, rgbIvs), CryptoStreamMode.Write))
                    {
                        cryptoStream.Write(inputByteArray, 0, inputByteArray.Length);
                        cryptoStream.FlushFinalBlock();
                        return Encoding.UTF8.GetString(memoryStream.ToArray());
                    }
                }
            }
        }

        public static string DecryptDes(byte[] inputByteArray)
        {
            using (DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider())
            {
                byte[] rgbKeys = Encoding.UTF8.GetBytes(DesKey);
                byte[] rgbIvs = DesIv;

                using (MemoryStream memoryStream = new MemoryStream())
                {
                    using (CryptoStream cryptoStream = new CryptoStream(memoryStream, desProvider.CreateDecryptor(rgbKeys, rgbIvs), CryptoStreamMode.Write))
                    {
                        cryptoStream.Write(inputByteArray, 0, inputByteArray.Length);
                        cryptoStream.FlushFinalBlock();
                        return Encoding.UTF8.GetString(memoryStream.ToArray());
                    }
                }
            }
        }
    }
}

测试

得到的文件

自己创造一个格式

用记事本打开如下

自己创造一个格式

搞定

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
上一篇:html+js上传文件
下一篇:C#使用SharpZipLib进行压缩文件(*.rar,*.zip)操作,压缩和解压
评论列表

发表评论

评论内容
昵称:
关联文章

自己创造一个格式定义文件后缀
C# 配置文件增加定义节点
Excel定义格式千分符
C# Winform 定义异常处理方法
WPF开发随笔收录-定义图标控件
agGrid定义列显示格式cellRenderer
.NET Core 定义中间件 Middleware
GZUpdate自动升级之定义更新补丁程序
SQL Prompt定义代码片段
窗体GridView布局定义
TinyMCE定义字体大小列表
System.BadImageFormatException:“未能加载文件或程序集 或它的某一个依赖项。试图加载格式不正确的程序
网站迁移纪实:从Web Form 到 Asp.Net Core (Abp vNext 定义开发)
分享一个研开发的QA自动化审计工具-Sonar检查
[.Net] .NET Reactor加授权方法 .NET Reactor定义注册机和获取机器码
定义表格操作按钮 GridControlEmbeddedNavigator
窗体定义权限操作按钮
Vue.js中如何限制Props只接受特定数组值:定义验证方法解析
C# 设置或验证 PDF中的文本域格式
从一次解决Nancy参数绑定“bug”开始发布自己的第一个nuget包(上篇)

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码