老笔记整理六:MD5的小作死

MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。是计算机广泛使用的杂凑算法之一。

MD5算法具有以下特点:

1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。

2、容易计算:从原数据计算出MD5值很容易。

3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

4、弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

5、强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。

然后我就在想,如果把一个字符串用MD5加密过以后再不停的进行MD5加密,会得到什么样的结果呢?遂有了以下代码:

using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;

namespace MD5puzzle
{
    class Program
    {
        static void Main(string[] args)
        {
            Int64 i = 0, j = 0;
            Int64 max = 10000000;

            string niconiconi = "niconiconi";
            string niconi, nico=niconiconi;

            StreamWriter swOut = new StreamWriter(@"E:\md5.txt", false, Encoding.Default);

            for (i = 0; (i < max) && (j == 0); i++)
            {
                niconi = does.MD5(nico);

                if (niconi == niconiconi)
                {
                    j = 1;
                }

                swOut.WriteLine(niconi + " " + i);
                nico = niconi;
            }

            System.Console.WriteLine("Finish");
            System.Console.Read();

        }

        public void domd5p()
        {

            Int64 i = 0, j = 0;
            Int64 max = 100000000;

            string nico = does.MD5("niconiconi");
            string niconi;

            for (i = 0; (i < max) && (j == 0); i++)
            {
                niconi = does.MD5(nico);

                if (niconi == nico)
                {
                    j = 1;
                }

                System.Console.WriteLine("NO." + i + "_" + niconi);
                nico = niconi;
            }

            System.Console.Read();
        }
    }

    class does
    {
        public static string MD5(string Sourcein)
        {
            MD5CryptoServiceProvider MD5CSP = new MD5CryptoServiceProvider();

            byte[] MD5Source = System.Text.Encoding.UTF8.GetBytes(Sourcein);

            byte[] MD5Out = MD5CSP.ComputeHash(MD5Source);

            return Convert.ToBase64String(MD5Out);
        }
    }
}

这里我把数据写到了md5.txt里。

当中改动过上限。括号里面的是上限,大家可以感受一下

没错,那个只有5百万次的已经有160MB了。我家的电脑实在比较无能。我玩到5百万就玩不下去了,有兴趣的同学可以下下来去试试。下面贴出前100个md5码

rRIpUGNjjelWrYVo1BInLA== 0

UrjRsTpLZN0WL72SDuid4w== 1

6MICH12/VVlQPlcqAyy3Aw== 2

3dOqdPJsUmBXwLAQaDGGHQ== 3

T+DsqpgWx5k/uZMtY5V1ig== 4

nMD0ewc/sG4F48SFyapgyA== 5

yYQi6mMUkxq8Hrf096EkKw== 6

+UzysWlAHkxNs33qK5BLCw== 7

h/9vU01bY5OQvCzgFiPzKA== 8

iUg4RSM4dc+C42bA7tddVQ== 9

MauXvC2lY72PuvNJUEO0pg== 10

sE75QOo3pLLz6p6WGA4gHA== 11

5Dpk6YBnDklIi/hpodU2sQ== 12

htzQz2LvmXEkq/ZC+KLJCQ== 13

aRX22z67lAsOqtTH+Tw8cQ== 14

lDklDi/l3/evDZxpPMgueQ== 15

FwaH5M0IfUFI8JxSGhhXhw== 16

Fl/Nn0ndML7kAzVy7eBz2Q== 17

721lIGZeXmLWUJFLoVKnzw== 18

rkeOoYGytxnNd5IbCjmXkg== 19

Ka8JEiL243jL3Af6sEPFvg== 20

A/IjZkj0a9HuHeTbOOiVsw== 21

P+AUgz4lMx2zyIwV1cE1+w== 22

T0Y7bPSx3e1Ihly2vaOK2w== 23

GmYdOwKhkQK9q+qQP8YweA== 24

coMC8O6Y/nMXj/800kZK3w== 25

bvCqEuLmSoHXgRfPhLy1uw== 26

n9jqVhYvunn8RPNeqA8z9g== 27

J3roDv2oLFdx5kd5+I6Fsw== 28

EtihsewoZlvcv7otGqTZ6w== 29

cub9APkZUzsvDAaV0Wmuog== 30

Fx3sYg0FkmEodUDJ9+e9hw== 31

IqrobIoalFbAF1Ien1/zAg== 32

Pb/fqpq2WEatKNnXEUx8Tw== 33

DJL8TLWnUvPndt5zTZaEcw== 34

BsUzuXzY07VTX/7f6TrVMQ== 35

OukV8qcNJPMd2tpAIaNYew== 36

jHbVc69HjE6fxSdyQKOOSA== 37

u5U6EFealDnTtVNYr6JMrQ== 38

dfTeboDPc0Zs8AE7y7Ryog== 39

THZ7l6lgnsah40pt1CIemA== 40

fOCcL2r2evM2QrwZnQeBPg== 41

byRrkNKG6erMWIA7uTqYxw== 42

e5qvFWng2siIbBiqCtWzxw== 43

6o6PosWy4h8nB+N/Ll9Wfg== 44

aI4xMxmdOLGr50p8PfXwKA== 45

sTtqsdyqgQYeHeziUwcXqQ== 46

mHEkXO/CSkdkJGUJ+9zfbg== 47

u8FTFCqdDE9BemXf6S5+iw== 48

vSkD5Loe4tWoVMSP5+zg7Q== 49

pyILkblGKZTcPs7iYRvcjw== 50

7f8iNhqqqJ9Jrs38lxtzhg== 51

3J8FT6WJCn/L1S3DHgXaSg== 52

f+aU3Kzm9CEqa02hBwlh9A== 53

gUPwk0TORS0MAZih0ksPUA== 54

mWIy2fhoA6b000+0ikpWTQ== 55

eQfD0zcukAwp37L6vJj6iQ== 56

U2wE534uWJTe5UAnAAu6gw== 57

VoL6uzLMskTCmil+C49Cpg== 58

1nEmQmBACaL0XVbUiSxv0Q== 59

BJxt/vpHsDVfizCvl5uRBg== 60

P/9excuqnyAxugIY4SLGgA== 61

O2qqoVKGa2RcW9b516d6Ww== 62

4Y3ULLcU+sOvKBjN8lEBvA== 63

hgWxbnIiZwXIYQ4FBSXTGg== 64

O7cxBcVgMD3ayM1H83cOhA== 65

x2xN7L/jccWH32bzzhk9ag== 66

setWXmUwVLncbIVZbnrVrg== 67

PgKpptzklLuLySSwU+zrJg== 68

fcHiicljN4dxG14Mer3ZAQ== 69

XG/9yosdOJ5NeeyP6JSG9A== 70

ETG8Fold3DHsmXiNvMxiFQ== 71

0RCECvl47EJaiYvNp7GHYA== 72

UQzRsVFXDbMPrO/cWeDj8g== 73

ogfGyPme4UxBEl6l/eWsPA== 74

z/C5G8525jGcvi5eYrWuTg== 75

Og7XbR6gzKji2WA2R2JnHQ== 76

/ZlcPNR70j+eVkPmim8v2Q== 77

pzspFErbLd8IPfoduULddA== 78

wYMqORQQ6XjQtwo4ewRD9Q== 79

UOhZzCdeUKplKV9J1TKJ0A== 80

0tVvT87rDcofgnud4mihbQ== 81

OKr/3PJN6FOO6xnhFAzW9w== 82

q0x6G834+fE6rbKBDORX9Q== 83

7/u3D3au9aixMKDpizP43Q== 84

9fa3y05Ao5kH8GQIIDiqqg== 85

VDhlIKghoLSbK3GJI3iREg== 86

S203+Ud/EhpNlvruXTNv3w== 87

NkyVsm2M/UcCGHX0ne1i3Q== 88

u+6SeE2UTAbe2IicGx7XUQ== 89

CPiFazZNP6LHpOIK86vkzg== 90

CgttspQziSWrq4H7QqshlA== 91

MT/YfWKSquFvkRBLYLyciA== 92

e3okGK6a2xqlqojhAI/y1Q== 93

KkJq1mGfoiJXjrQXvt3QSQ== 94

fuBEgx4H2U0Oy89TI4VgMQ== 95

Pb8U1wlvgJ8RaSn1KC/y6A== 96

uSy3xXweQiQRTwOMcA2RJA== 97

lc7RHW8ew5KWJcZoJg1wuw== 98

s+kWyYo+xGfgjZ4FI8IuaA== 99

时间: 2024-11-08 15:34:22

老笔记整理六:MD5的小作死的相关文章

老笔记整理二:网页小问题汇总

最近有一些小问题.想在这里写出来.一是方便大家排错,再是自己也整理一下. 1.很傻的小问题...参数提交方式有一个应该是form而不是from.(英语老师,我对不起你...) 2.用超链接传参数,在?后面不能有空格. 3.表单里的东西(如文本域)放完后,记得要改name(名字)和value(数值).否则在后台会报错.通常是fun.asp里 ExcuteRs里mCmd.execute出错. 4.where 语句里字符串一定要加单引号,基本都是' "  &  变量  &  "

老笔记整理一:asp

学生时代 主要用的是asp 和 asp.net 笔记也写了不少,现在回头看看有不少不错的代码.现整理后贴出来. 自用函数库: fun.asp 1 Dim mConn,mRs 2 mConn="Driver={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("BBS.mdb") 3 4 public function OpenRs(mSQL) 5 set OpenRs=server.CreateO

老笔记整理四:字符串的完美度

今天在宠果网上发现一道题目,求一个字符串的完美度http://hero.pongo.cn/home/index觉得这道题很有趣就挑战了一下,结果没有在规定的1小时里面写完(笑),多花了10分钟终于做出来了. 题目是这样的:我们要给每个字母配一个1-26之间的整数,具体怎么分配由你决定,但不同字母的完美度不同, 而一个字符串的完美度等于它里面所有字母的完美度之和,且不在乎字母大小写,也就是说字母F和f的完美度是一样的. 现在给定一个字符串,输出它的最大可能的完美度. 例如:dad,你可以将26分配

老笔记整理七:高斯分布解决随机圆分布问题

好久没有写空间了,今天在写一个页面的时候遇到了之前从来没有遇到过的问题.今天有主要问题有两个.     1.我想在背景上生成随机圆:    2.是基于上面产生的问题. 首先,通过JS生成DIV,给DIV 加DSS让他成为一个圈.这个问题不大,大概半个小时就写出来了. div结构也不复杂 然后运行结果 大家 看出问题了吗?是的,产生的圆不怎么会在当中.想想也是,既然是随即生成的那么应该是平均分布的. 但是这并不是我想要的结果.我之所以要这些圆圈是为了让背景好看点,如果看不到那还有什么意思?但是又不

老笔记整理五:C实现10阶内通过展开代数余子式求行列式的值

这个分为两部分,先是写出了C实现计算三阶行列式,然后过了一段时间突然有了思路才写下了10阶内这段代码.真怀念那段写代码的日子. 一:C实现计算三阶行列式 最近高数课在上线性代数,二阶的还能口算,三阶的有点麻烦,想陆陆续续地把公式都用C来实现.因为二阶的行列式如果用C来写就是一句话:val=det[0][0]*det[1][1]-det[0][1]*det[1][0];太简单了这里就不写了,主要写关于三阶的.只要把这个三阶行列式里每一个元素打进去就能算出值来了.过两天再写余子式的展开. 1 #in

Deep Learning(深度学习)学习笔记整理系列之(六)

Deep Learning(深度学习)学习笔记整理系列 [email protected] http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04-08 声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的版本声明也参考原文献. 2)本文仅供学术交流,非商用.所以每一部分具体的参考资料并没有详细对应.如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主

Deep Learning(深度学习)学习笔记整理系列七

Deep Learning(深度学习)学习笔记整理系列 声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的版本声明也参考原文献. 2)本文仅供学术交流,非商用.所以每一部分具体的参考资料并没有详细对应.如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除. 3)本人才疏学浅,整理总结的时候难免出错,还望各位前辈不吝指正,谢谢. 4)阅读本文需要机器学习.计算机视觉.神经网络等等基础(如果没有也没关系了,没

Deep Learning(深度学习)学习笔记整理系列之(五)

Deep Learning(深度学习)学习笔记整理系列 [email protected] http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04-08 声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的版本声明也参考原文献. 2)本文仅供学术交流,非商用.所以每一部分具体的参考资料并没有详细对应.如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主

Deep Learning(深度学习)学习笔记整理系列之(三)

Deep Learning(深度学习)学习笔记整理系列 [email protected] http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04-08 声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的版本声明也参考原文献. 2)本文仅供学术交流,非商用.所以每一部分具体的参考资料并没有详细对应.如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主