登录 注册
当前位置:主页 > 资源下载 > 10 > 没有任何黑客能够破解的加密算法

没有任何黑客能够破解的加密算法

  • 更新:2024-10-21 11:05:01
  • 大小:267KB
  • 推荐:★★★★★
  • 来源:网友上传分享
  • 类别:网络攻防 - 安全技术
  • 格式:RAR

资源介绍

打败所有黑客 Beat All Hackers 【欢迎转载或翻译该文】 现在上网,难免会涉及一些需要保密的内容,比如密码,账号,卡号,证件号等。但是黑客无处不在,他们常常窃听你的信息,给你放置陷阱,让你的防不胜防。 比如我现在要将信息“账号:123456,密码:567890” 从A经过B传递到C,黑客可能从中间环节B截取你传输的信息。我们日常交换的信息量是很大的,黑客怎么知道现在传输的就是“密码”或“账号”呢?那么他就会设定关键词,比如“密码”,凡是含有该关键词的信息都会被截获,而其他信息就会被放掉。 你可能会讲,你传输的信息都是通过加密的,对!这就是关键的地方,现在已经有很多加密算法,他们将我们传输的数据进行加密,但是请注意,既然可以加密就可以解密,你可能从网络上早已了解到,很多加密算法是如何的厉害,一台PC要暴利破解要多少年!可是你忽略了,黑客可能比你的计算机好,他也可能控制肉鸡帮他计算,他破解的速度可能远远超出你的想象。 同时,你必须注意,现在很多加密算法,加密部分都是掌握在别人手上,比如你通过及时通讯或email将信息传递给你的朋友,一般加密都是掌握在即时通讯提供方,和email提供方,如果被黑客利用,你的信息将视同于没有加密。或者黑客可以对其陷阱预设解密方法和密钥,一旦检测到就进行解密。所以你最好自己对信息加密! 现在问题是,黑客对你信息不能解密的放过,能够解密的再留下破解。你的信息仍然处于危险之中。于是有了我现在所说的这种加密方法,非函数不校检的加密方法。 加密思想: 原始文本:1234567890 密钥:123 首先如果密钥第一位为1,则将原始明文,逐位交换变成2143658709. 其次如果密钥第二位为2,则继续进行两两交换,变成4321876509 再次如果密钥第三位为3,则继续三三交换,变成1874326509 密钥是什么可以自己限定,交换方式也可以自己设定,你可以逐位交换,也可以跳转交换,也可以按密文所在位的值进行交换。主要思想就是,乱序。那么所有排列的数量就与你原始明文的长度密切相关,比如10位,所有可能就是P10的全排列。不同密码,可能加密出同样的结果。但是如果把一个字符按64位或256位处理,短短的10位字符,已经不再只有P10的全排列个结果。 关键点:不管你的计算机有多快,你每次只能解密一次!而且计算机不会告诉你是否解密正确,必须要你自己判断!即使黑客知道怎么解密也不好下手,即使他们做出所有的排列,也必须一个一个去判断哪一个正确。这是任何一个黑客都无法忍受的!而且排序很耗资源,即使其自定义一些检测方法也于事无补。 先看个例子: 原始明文“天上密密麻麻布满乌云,码头上的船也整整齐齐的排列在一起,等待暴风雨的来临!” 密码:235312336232 结果:“上密码天密麻满乌船的云布上暴列头风,齐齐,起麻整一的的在等排雨也来待整临!” 全句含标点37个字符,两个“密”一个“码”,现在只考虑一个“密”跟“码”结合组合成“密码”关键词,而且只考虑排在句首,那么组合形式就达P35的全排列。如果我们将这句话乱序发出,至少有P35/P37的概率触发黑客的“密码”关键词陷阱。打个比方就是,猎人在一条道上放了陷阱,凡是靠近地面行走的动物才会触发机关,现在是风吹一下就会触发机关。无穷的信息量将使黑客的陷阱充满无用信息,让其降低真正窃密的几率! 迫切性,大家都在说云计算时代来了,软件不用装了,海量信息可以存储到服务器上,走到哪里就在那里提取,但是你能保证你在服务器上的信息不泄露吗?怎么办?我的建议是,利用上面的加密思想进行加密,任何人想要暴利破解都不行,而你只需要输入密码,很快就可以确定那就是你的原始信息! 1, 自己编译软件:首先如果你可以自己根据代码设置自己的算法(改变交换位置即可)和密码,然后自己编译成软件,那么加密方法就是你一个人独有的。 2, 添加浏览器插件:也可以为你的IE,Maxthon,firefox,opera等浏览器或其他工具添加插件。 这样你可以在发email或者写网上日志时使用。比如你想记录自己的日常生活,记在自己电脑上怕遗失,记在网上又怕被黑客攻击而泄露,所以这时你需要这个简单有效的加密方式,不增加内容的长度,看上去也跟别的日志没有区别,要看的时候,自己输入密码看就是,如果是IE等浏览器有插件设置好的话,还可以免去这些繁复的操作,自动加密和解密! 你的空间或博客可能设置有密码,如果你再通过这种方式对你写的日记加密,即使别人破解了你的空间密码,或博客出现漏洞,你的信息也不会被泄露。该方法也可以对文件和图片进行加密,比如图片,可以按照一个一个像素的交换,这样加密的图片是很难破解的,但是你根据你的密码可以轻松的还原。防止你的秘密相册被偷看。 这个当然也可以用于其他信息加密,比如声音加密,防止非法窃听! C#编程外行,可能用的很不科学,特别是容错机制,但基本思想已经表达,代码还有很多bug,有建议的请跟帖到:sosecretblog.blogspot.com 利用该方法加密,然后再结合其他加密方式,比如AES,DES等,可以有效的保证你的数据安全! C#源代码: 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 NumberAntiHack { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //----------Enumber Start----------- #region estring1------- //-----estring1------------- private string estring1(string origin) { try { char[] ori = origin.ToCharArray(); int len = ori.Length; char[] after = new char[len]; //-----COPY ori to after for (int i = 0; i < len; i++) { after[i] = ori[i]; } //---transfer 1 by 1 for (int i = 1; i <= (len / 2); i++) { int j = i * 2; after[j - 2] = ori[j - 1]; after[j - 1] = ori[j - 2]; } string last = new string(after); return last; } catch { return origin; } } //-----estring1-------end---------- #endregion #region estring2------- //-----estring2------------- private string estring2(string origin) { try { char[] ori = origin.ToCharArray(); int len = ori.Length; char[] after = new char[len]; for (int i = 0; i < len; i++) { after[i] = ori[i]; } //---transfer 2 by 2 for (int i = 1; i <= (len / 4); i++) { int j = i * 4; after[j - 2] = ori[j - 4]; after[j - 1] = ori[j - 3]; after[j - 4] = ori[j - 2]; after[j - 3] = ori[j - 1]; } string last = new string(after); return last; } catch { return origin; } } //-----estring2-------end---------- #endregion #region estring3------- //-----estring3------------- private string estring3(string origin) { try { char[] ori = origin.ToCharArray(); int len = ori.Length; char[] after = new char[len]; for (int i = 0; i < len; i++) { after[i] = ori[i]; } //transfer 3 by 3 for (int i = 1; i <= (len / 6); i++) { int j = i * 6; after[j - 6] = ori[j - 3]; after[j - 5] = ori[j - 2]; after[j - 4] = ori[j - 1]; after[j - 3] = ori[j - 6]; after[j - 2] = ori[j - 5]; after[j - 1] = ori[j - 4]; } string last = new string(after); return last; } catch { return origin; } } //-----estring3-------end---------- #endregion #region estring4------- //-----estring4------------- private string estring4(string origin) { try { char[] ori = origin.ToCharArray(); int len = ori.Length; char[] after = new char[len]; for (int i = 0; i < len; i++) { after[i] = ori[i]; } //transfer 4 by 4 for (int i = 1; i <= (len / 8); i++) { int j = i * 8; after[j - 8] = ori[j - 4]; after[j - 7] = ori[j - 3]; after[j - 6] = ori[j - 2]; after[j - 5] = ori[j - 1]; after[j - 4] = ori[j - 8]; after[j - 3] = ori[j - 7]; after[j - 2] = ori[j - 6]; after[j - 1] = ori[j - 5]; } string last = new string(after); return last; } catch { return origin; } } //-----estring4-------end---------- #endregion #region estring5------- //-----estring5------------- private string estring5(string origin) { try { char[] ori = origin.ToCharArray(); int len = ori.Length; char[] after = new char[len]; for (int i = 0; i < len; i++) { after[i] = ori[i]; } //transfer 5 by 5 for (int i = 1; i <= (len / 10); i++) { int j = i * 10; after[j - 10] = ori[j - 5]; after[j - 9] = ori[j - 4]; after[j - 8] = ori[j - 3]; after[j - 7] = ori[j - 2]; after[j - 6] = ori[j - 1]; after[j - 5] = ori[j - 10]; after[j - 4] = ori[j - 9]; after[j - 3] = ori[j - 8]; after[j - 2] = ori[j - 7]; after[j - 1] = ori[j - 6]; } string last = new string(after); return last; } catch { return origin; } } //-----estring5-------end---------- #endregion #region estring6------- //-----estring6------------- private string estring6(string origin) { try { char[] ori = origin.ToCharArray(); int len = ori.Length; char[] after = new char[len]; for (int i = 0; i < len; i++) { after[i] = ori[i]; } //transfrt 6 by 6 for (int i = 1; i <= (len / 12); i++) { int j = i * 12; after[j - 12] = ori[j - 6]; after[j - 11] = ori[j - 5]; after[j - 10] = ori[j - 4]; after[j - 9] = ori[j - 3]; after[j - 8] = ori[j - 2]; after[j - 7] = ori[j - 1]; after[j - 6] = ori[j - 12]; after[j - 5] = ori[j - 11]; after[j - 4] = ori[j - 10]; after[j - 3] = ori[j - 9]; after[j - 2] = ori[j - 8]; after[j - 1] = ori[j - 7]; } string last = new string(after); return last; } catch { return origin; } } //-----estring6-------end---------- #endregion #region estring7------- //-----estring7------------- private string estring7(string origin) { try { char[] ori = origin.ToCharArray(); int len = ori.Length; char[] after = new char[len]; for (int i = 0; i < len; i++) { after[i] = ori[i]; } //transfer 7 by 7 for (int i = 1; i <= (len / 14); i++) { int j = i * 14; after[j - 14] = ori[j - 7]; after[j - 13] = ori[j - 6]; after[j - 12] = ori[j - 5]; after[j - 11] = ori[j - 4]; after[j - 10] = ori[j - 3]; after[j - 9] = ori[j - 2]; after[j - 8] = ori[j - 1]; after[j - 7] = ori[j - 14]; after[j - 6] = ori[j - 13]; after[j - 5] = ori[j - 12]; after[j - 4] = ori[j - 11]; after[j - 3] = ori[j - 10]; after[j - 2] = ori[j - 9]; after[j - 1] = ori[j - 8]; } string last = new string(after); return last; } catch { return origin; } } //-----estring7-------end---------- #endregion #region estring8------- //-----estring8------------- private string estring8(string origin) { try { char[] ori = origin.ToCharArray(); int len = ori.Length; char[] after = new char[len]; for (int i = 0; i < len; i++) { after[i] = ori[i]; } //transfer 8 by 8 for (int i = 1; i <= (len / 16); i++) { int j = i * 16; after[j - 16] = ori[j - 8]; after[j - 15] = ori[j - 7]; after[j - 14] = ori[j - 6]; after[j - 13] = ori[j - 5]; after[j - 12] = ori[j - 4]; after[j - 11] = ori[j - 3]; after[j - 10] = ori[j - 2]; after[j - 9] = ori[j - 1]; after[j - 8] = ori[j - 16]; after[j - 7] = ori[j - 15]; after[j - 6] = ori[j - 14]; after[j - 5] = ori[j - 13]; after[j - 4] = ori[j - 12]; after[j - 3] = ori[j - 11]; after[j - 2] = ori[j - 10]; after[j - 1] = ori[j - 9]; } string last = new string(after); return last; } catch { return origin; } } //-----estring8-------end---------- #endregion #region estring9------- //-----estring9------------- private string estring9(string origin) { try { char[] ori = origin.ToCharArray(); int len = ori.Length; char[] after = new char[len]; for (int i = 0; i < len; i++) { after[i] = ori[i]; } //transfer 9 by 9 for (int i = 1; i <= (len / 18); i++) { int j = i * 18; after[j - 18] = ori[j - 9]; after[j - 17] = ori[j - 8]; after[j - 16] = ori[j - 7]; after[j - 15] = ori[j - 6]; after[j - 14] = ori[j - 5]; after[j - 13] = ori[j - 4]; after[j - 12] = ori[j - 3]; after[j - 11] = ori[j - 2]; after[j - 10] = ori[j - 1]; after[j - 9] = ori[j - 18]; after[j - 8] = ori[j - 17]; after[j - 7] = ori[j - 16]; after[j - 6] = ori[j - 15]; after[j - 5] = ori[j - 14]; after[j - 4] = ori[j - 13]; after[j - 3] = ori[j - 12]; after[j - 2] = ori[j - 11]; after[j - 1] = ori[j - 10]; } string last = new string(after); return last; } catch { return origin; } } //-----estring9-------end---------- #endregion #region estring0------- //-----estring0------------- private string estring0(string origin) { try { char[] ori = origin.ToCharArray(); int len = ori.Length; char[] after = new char[len]; for (int i = 0; i < len; i++) { after[i] = ori[i]; } //transfer 10 by 10 for (int i = 1; i <= (len / 20); i++) { int j = i * 20; after[j - 20] = ori[j - 10]; after[j - 19] = ori[j - 9]; after[j - 18] = ori[j - 8]; after[j - 17] = ori[j - 7]; after[j - 16] = ori[j - 6]; after[j - 15] = ori[j - 5]; after[j - 14] = ori[j - 4]; after[j - 13] = ori[j - 3]; after[j - 12] = ori[j - 2]; after[j - 11] = ori[j - 1]; after[j - 10] = ori[j - 20]; after[j - 9] = ori[j - 19]; after[j - 8] = ori[j - 18]; after[j - 7] = ori[j - 17]; after[j - 6] = ori[j - 16]; after[j - 5] = ori[j - 15]; after[j - 4] = ori[j - 14]; after[j - 3] = ori[j - 13]; after[j - 2] = ori[j - 12]; after[j - 1] = ori[j - 11]; } string last = new string(after); return last; } catch { return origin; } } //-----estring0-------end---------- #endregion //-------------------Enumber End------------- private void button1_Click(object sender, EventArgs e) { if (textBox3 == null) { MessageBox.Show("No Password"); } else { if (textBox1 == null) { MessageBox.Show("No words need to Encrypt"); } else { string key = textBox3.Text; char[] keyword = key.ToCharArray(); int keylen = keyword.Length; string origin = textBox1.Text; //---选择方法--- for (int i = 0; i < keylen; i++) { if (keyword [i]=='1') { origin =estring1(origin);} else if(keyword [i]=='2') { origin =estring2(origin);} else if (keyword[i] == '3') { origin = estring3(origin);} else if (keyword[i] == '4') { origin = estring4(origin); } else if (keyword[i] == '5') { origin = estring5(origin); } else if (keyword[i] == '6') { origin = estring6(origin); } else if (keyword[i] == '7') { origin = estring7(origin); } else if (keyword[i] == '8') { origin = estring8(origin); } else if (keyword[i] == '9') { origin = estring9(origin); } else if (keyword[i] == '0') { origin = estring0(origin); } else { break; } } string last = origin; textBox2.Clear(); textBox2.AppendText(last); }; } } private void Form1_Load(object sender, EventArgs e) { } private void textBox1_TextChanged(object sender, EventArgs e) { } private void textBox2_TextChanged(object sender, EventArgs e) { } private void textBox3_TextChanged(object sender, EventArgs e) { } private void button2_Click(object sender, EventArgs e) { if (textBox3 == null) { MessageBox.Show("No Password"); } else { if (textBox1 == null) { MessageBox.Show("No words need to Encrypt"); } else { string key = textBox3.Text; char[] keyword = key.ToCharArray(); int keylen = keyword.Length; string origin = textBox1.Text; //---选择方法--- for (int i = keylen-1 ; i >= 0; i--) { if (keyword[i] == '1') { origin = estring1(origin); } else if (keyword[i] == '2') { origin = estring2(origin); } else if (keyword[i] == '3') { origin = estring3(origin); } else if (keyword[i] == '4') { origin = estring4(origin); } else if (keyword[i] == '5') { origin = estring5(origin); } else if (keyword[i] == '6') { origin = estring6(origin); } else if (keyword[i] == '7') { origin = estring7(origin); } else if (keyword[i] == '8') { origin = estring8(origin); } else if (keyword[i] == '9') { origin = estring9(origin); } else if (keyword[i] == '0') { origin = estring0(origin); } else { break; } } string last = origin; textBox2.Clear(); textBox2.AppendText(last); }; } } private void button3_Click(object sender, EventArgs e) { if (textBox3 == null) { MessageBox.Show("No Password"); } else { if (textBox1 == null) { MessageBox.Show("No words need to Encrypt"); } else { string key = textBox3.Text; char[] keyword = key.ToCharArray(); int keylen = keyword.Length; //-----将输入字符串的二进制按字符串处理--- string ori1 = textBox1.Text; char[] ori2 = ori1.ToCharArray(); byte[] ori3 = System.Text.Encoding.Default.GetBytes(ori2); String origin = Convert .ToBase64String(ori3); //---选择方法--- for (int i = 0; i < keylen; i++) { if (keyword[i] == '1') { origin = estring1(origin); } else if (keyword[i] == '2') { origin = estring2(origin); } else if (keyword[i] == '3') { origin = estring3(origin); } else if (keyword[i] == '4') { origin = estring4(origin); } else if (keyword[i] == '5') { origin = estring5(origin); } else if (keyword[i] == '6') { origin = estring6(origin); } else if (keyword[i] == '7') { origin = estring7(origin); } else if (keyword[i] == '8') { origin = estring8(origin); } else if (keyword[i] == '9') { origin = estring9(origin); } else if (keyword[i] == '0') { origin = estring0(origin); } else { break; } } string last = origin; textBox2.Clear(); textBox2.AppendText(last); }; } } private void button4_Click(object sender, EventArgs e) { if (textBox3 == null) { MessageBox.Show("No Password"); } else { if (textBox1 == null) { MessageBox.Show("No words need to Encrypt"); } else { string key = textBox3.Text; char[] keyword = key.ToCharArray(); int keylen = keyword.Length; //---将二进制转回---- string origin = textBox1.Text.ToString(); //---选择方法--- for (int i = keylen - 1; i >= 0; i--) { if (keyword[i] == '1') { origin = estring1(origin); } else if (keyword[i] == '2') { origin = estring2(origin); } else if (keyword[i] == '3') { origin = estring3(origin); } else if (keyword[i] == '4') { origin = estring4(origin); } else if (keyword[i] == '5') { origin = estring5(origin); } else if (keyword[i] == '6') { origin = estring6(origin); } else if (keyword[i] == '7') { origin = estring7(origin); } else if (keyword[i] == '8') { origin = estring8(origin); } else if (keyword[i] == '9') { origin = estring9(origin); } else if (keyword[i] == '0') { origin = estring0(origin); } else { break; } } string last = origin; byte[] last1 = Convert.FromBase64String(last); char[] last2 = System.Text.Encoding.Default.GetChars(last1); string last3 = new string(last2); textBox2.Clear(); textBox2.AppendText(last3); }; } } private void pictureBox1_Click(object sender, EventArgs e) { //--访问主页:http://www.sosecret.net 专注个人隐私保护 System.Diagnostics.Process.Start("http://www.sosecret.net"); } } } 挑战:有一个2万字符左右的加密文件,接受任何人的破解测试,论坛无法贴,请到blog留下联系方式,我将发送密文。