目录
介绍
压缩
加密
Tango库
压缩
加密
使用压缩加密
在操作中
生成
测量
用于内存中gzip和lzma压缩的.NET库与基于强blakeb的流密码引擎结合使用。
- 下载Tango.zip - 910.6 KB
该项目为内存数据(如byte数组和MemoryStream)压缩和加密引入了一个自持的.NET库(dll)。当然,处理后的输出可以保存到硬盘中,但项目集中在有效的内存数据处理方方法上。
压缩压缩的明显选择是内置的.NET GZip功能和7Zip SDK C#实现提供的LZM算法,这是迄今为止最有效的压缩功能。
由于项目的目的是直接内存转换,因此它不提供具有特定头结构的7Zip文件。该库调用GZip和LZM压缩算法,使用并行编程来缩小/扩充内存数据,以利用多个CPU内核。
库可用的压缩选项来自以下内容
public enum CompressionAlgo {
GZip_All,
GZip1,
GZip2,
GZip4,
GZip8,
LZMA_All,
LZMA1,
LZMA2,
LZMA4,
LZMA8,
None
}
其中1,2,4,8代表压缩期间要处理的处理器数量,Gzip_All和LZMA_All代表所有可用的机器处理器(通常等于8,因此LZMA_All和LZMA8具有相同的含义)。
提供的功能的主要和唯一的目的是内存操作。因此保存到硬盘的单线程LZMA1压缩结果(字节数组)形成了可以使用7zip应用程序打开的正确7z文件,但多线程选项不能提供格式良好的7z文件。
加密对于加密部分,该库引入了基于BlakeB压缩功能的快速流密码,由Samuel Neves,Christian Winnerlein和Uli Riehm实现。
BlakeB压缩功能在生成器的核心工作,该生成器在输入的键、盐(salt)和分布值中创建用户独有的输出字节数组(pad)。
生成的pad以下列方式用于加密/解密:
加密:纯文本(字节数组p)XOR pad =>密文(字节数组x)
解密:密文(x)XOR pad =>纯文本(p)
由于加密和解密功能都只是使用pad对字节进行异或,因此密码引擎包括覆盖这两种情况的单个函数Crypt,并为我们提供了流密码实现。
发生器(程序中的BGen类)和流密码(程序中的Streamer类)都使用多核处理器以并行模式工作。
例如,如果机器有8个处理器,则生成器将生成8个并行阵列并将它们粘合到单个输出(pad)中。不用说,这些数组保证是独一无二的,不会重复。
类似地,Streamer将输入流分成8个部分,与填充的8个相应部分进行异或,并产生汇总结果。
让我们对BlakeB功能进行一些修改。
核心压缩功能由这些块组成
v0 = v0 + v4 + m0;
v12 = v12 ^ v0;
v12 = ((v12 >> 32) | (v12 > 24) | (v4 > 16) | (v12 > 63) | (v4 > 32) | (v13 > 24) | (v5 > 16) | (v13 > 63) | (v5 > n) | (x
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?