雷神之锤暴力压缩算法

news/2024/11/8 23:06:15/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace 雷神之锤暴力压缩算法
{public partial class Form1 : Form{public Form1(){InitializeComponent();}byte[] info = new byte[] { 0xAB, 0x05, 0x09, 0x15, 0x00, 0x0F };//1.首先1个字节变成两个字节,使得两个字节之和是byte[i],并且满足位置的奇数偶数,还要满足校验和,条件是先把倒数第三个字节转换为二进制,1是奇数,2是偶数string er = "";private void Form1_Load(object sender, EventArgs e){loadPrime();//初始化质数表er = Convert.ToString(info[info.Length - 3], 2);if (er.Length < (info.Length - 3) * 2){for (int i = 0; i < (info.Length - 3) * 2 - er.Length; i++){er = "0" + er; // er[]长度= 原始密文的长度-3)*2=6,如果长度不够,前面补0}}for (int m = 0; m < info.Length - 3; m++){textBox1.Text += info[m] + " GO...\r\n";for (int x = 0; x < 16; x++){for (int y = 0; y < 16; y++){//0 0if (x + y == info[m]){for (int z = m * 2; z < er.Length - 1; z++){int tmp=int.Parse(er[z].ToString());int yu=x%2;if (tmp==yu)if (y % 2 == int.Parse(er[z + 1].ToString()))textBox1.Text += "x=" + x + ",y=" + y + "\r\n";break;}}if (x * y == info[m]){//注意奇数是没有办法拆分为整数乘除,如果info[m]是一个质数,那么根据欧几里得原理,计算量就变小了//X+Y=INFO[M] 并且INFO[M]属于质数//那X=1,Y=INFO[M]-1 或者 Y=1,X=INFO[M]-1textBox2.Text += "x=" + x + ",y=" + y + "\r\n";}}}}}Dictionary<int, int> prs = new Dictionary<int, int>();private void loadPrime(){prs.Add(2, 0);prs.Add(3, 0);prs.Add(5, 0);prs.Add(7, 0);prs.Add(11, 0);prs.Add(13, 0);prs.Add(17, 0);prs.Add(19, 0);prs.Add(23, 0);prs.Add(29, 0);prs.Add(31, 0);prs.Add(37, 0);prs.Add(41, 0);prs.Add(43, 0);prs.Add(47, 0);prs.Add(53, 0);prs.Add(59, 0);prs.Add(61, 0);prs.Add(67, 0);prs.Add(71, 0);prs.Add(73, 0);prs.Add(79, 0);prs.Add(83, 0);prs.Add(89, 0);prs.Add(97, 0);prs.Add(101, 0);prs.Add(103, 0);prs.Add(107, 0);prs.Add(109, 0);prs.Add(113, 0);prs.Add(127, 0);prs.Add(131, 0);prs.Add(137, 0);prs.Add(139, 0);prs.Add(149, 0);prs.Add(151, 0);prs.Add(157, 0);prs.Add(163, 0);prs.Add(167, 0);prs.Add(173, 0);prs.Add(179, 0);prs.Add(181, 0);prs.Add(191, 0);prs.Add(193, 0);prs.Add(197, 0);prs.Add(199, 0);prs.Add(211, 0);prs.Add(223, 0);prs.Add(227, 0);prs.Add(229, 0);prs.Add(233, 0);prs.Add(239, 0);prs.Add(241, 0);prs.Add(251, 0);}List<string> cache = new List<string>();List<byte[]> cacheint = new List<byte[]>();private void five(List<string> info){for (int i = 0; i < info.Count; i++){	for (int j = 0; j < info.Count; j++){for (int k = 0; k < info.Count; k++){//for (int x = 0; x < info.Count; x++)//{byte[] hex = new byte[3];hex[0] = Convert.ToByte(info[i], 16);hex[1] = Convert.ToByte(info[j], 16);hex[2] = Convert.ToByte(info[k], 16);//hex[3] = Convert.ToByte(info[x], 16);cacheint.Add(hex);//}}}}textBox2.Text = "ok";}private void four(){string[] info = new string[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F" };List<string> all=new List<string>();for (int i = 0; i < info.Length; i++){for (int j = 0; j < info.Length; j++){all.Add(info[i]+info[j]);}}five(all);textBox2.Text = "ok";}private void back(List<string> info){for (int i = 0; i < info.Count; i++){for (int j = 0; j < info.Count; j++){for (int k = 0; k < info.Count; k++){for (int x = 0; x < info.Count; x++){for (int y = 0; y < info.Count; y++){for (int z = 0; z < info.Count; z++){for (int a = 0; a < info.Count; a++){for (int b = 0; b < info.Count; b++){byte[] hex = new byte[] { };byte hexb = Convert.ToByte(info[b], 16);//hex[0] = Convert.ToByte(info[i] + info[j], 16);//hex[1] = Convert.ToByte(info[k] + info[x], 16);//hex[2] = Convert.ToByte(info[y] + info[z], 16);//hex[2] = Convert.ToByte(info[a] + info[b], 16);cacheint.Add(hex);}}}}}}}}textBox2.Text = "ok";}}
}

此算法的好处是有很大概率将一串2进制数据压缩为更大的串 

 


http://www.ppmy.cn/news/141621.html

相关文章

简单易学!使用 Node.js 编写爬虫,跟着教程一步步实现!

爬虫是一种可以自动从网页上获取数据的程序&#xff0c;它可以帮助我们收集和分析各种有用的信息。在这篇文章中&#xff0c;我将向你展示如何用 node.js 来编写一个简单的爬虫&#xff0c;只需几步就可以实现。 1、安装 node.js 和 npm node.js 是一个基于 Chrome V8 引擎的…

将 PDF 压缩到 1 MB 或更小的 5 个工具

鉴于工作和生活中PDF文件的频繁传输&#xff0c;压缩文件大小成为PDF文件必不可少的一步&#xff0c;尤其是对于包含大量高清图片的文件。压缩不仅使您的文件兼容发送&#xff0c;还有助于存储优化。这意味着您将获得更多数据空间&#xff0c;适用于本地设备和云端。 想要将 …

第十一篇、基于Arduino uno,获取单个按键的输入信号(滤波消抖)——结果导向

0、结果 说明&#xff1a;先来看看串口调试助手显示的结果&#xff0c;当按下按键的时候&#xff0c;按一次会打印一次按键被按下。如果是你想要的&#xff0c;可以接着往下看。 1、外观 说明&#xff1a;虽然每个型号的按键形态各异&#xff0c;但是原理和代码都是适用的&am…

上班最强摸鱼游戏-多人联机小游戏 (一)

highlight: a11y-dark 多人在线射击游戏、最强摸鱼游戏 在想体验地址> github地址&#xff1a; 开发不易&#xff0c;多谢大哥大姐们点个start吧&#xff0c;点个小爱心吧 技术栈 canvas、socket 初始 Canvas 画布 <template><div class"main-wrap"…

【软件质量与软件测试 基于缺陷模式的软件测试】

文章目录 第十二章 基于缺陷模式的软件测试12.1 概述&#xff1a;12.1.1 相关定义&#xff1a;12.1.2 软件缺陷的产生原因&#xff1a;12.1.3 减少缺陷的关键因素&#xff1a;12.1.4 软件缺陷的特征&#xff1a; 12.2 软件缺陷属性&#xff1a;12.2.1 缺陷类型&#xff1a;12.2…

简单下载

简单下载,项目有需要,就搞了个下载 FileInfo fi new FileInfo(路径);Response.Clear();Response.ClearContent();Response.ClearHeaders();Response.Buffer true;Response.Charset Encoding.UTF8.BodyName;Response.AppendHeader("Content-Disposition", "att…

超简单的HTML5小游戏

装B达人 欢迎来到装B世界&#xff0c;我是王小伟!按住篮子拖动&#xff0c;开始装B吧&#xff01; 你的B掉了一地&#xff0c;再装一遍吧&#xff01; 这个B装的我给你103分&#xff0c;一分包容&#xff0c;一分关心&#xff0c;一分父爱

电脑、手机 自动化 键鼠操作( 类似按键精灵 )

有没有和按键精灵类似的脚本软件 &#xff1f;&#xff1f;&#xff1a;https://www.zhihu.com/question/342937346 AutomateIt、Automate、按键精灵、AutoJS…等Android自动化工具有什么特点&#xff1f;&#xff1a;https://www.zhihu.com/question/59503646 按键精灵系列软…