您当前的位置: 首页 > 

寒冰屋

暂无认证

  • 3浏览

    0关注

    2286博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

有效的数据处理:使用Tango库进行压缩和加密

寒冰屋 发布时间:2019-01-09 22:19:00 ,浏览量:3

目录

介绍

压缩

加密

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             
关注
打赏
1665926880
查看更多评论
0.2031s