搜索 社区服务 统计排行 帮助
  • 2134阅读
  • 24回复

[ZT]『新闻』经典MD5算法被中国数学家找到漏洞(据说对p2p的安全将造成影响)

楼层直达
级别: 风云使者
注册时间:
2001-11-21
在线时间:
0小时
发帖:
6962
转自中国驴

http://bbs.edonkey2000.cn:18880/forum/post.php?action=reply&fid=6&tid=45699&repquote=371922

这东西具体是什么我也没看懂,但是据说这等于伪造文件和userhahs成为可能,P2P的身份证系统不再安全


Quote:
节选:
file1.dat:

00000000 d1 31 dd 02 c5 e6 ee c4 69 3d 9a 06 98 af f9 5c
00000010 2f ca b5 87 12 46 7e ab 40 04 58 3e b8 fb 7f 89
00000020 55 ad 34 06 09 f4 b3 02 83 e4 88 83 25 71 41 5a
00000030 08 51 25 e8 f7 cd c9 9f d9 1d bd f2 80 37 3c 5b
00000040 96 0b 1d d1 dc 41 7b 9c e4 d8 97 f4 5a 65 55 d5
00000050 35 73 9a c7 f0 eb fd 0c 30 29 f1 66 d1 09 b1 8f
00000060 75 27 7f 79 30 d5 5c eb 22 e8 ad ba 79 cc 15 5c
00000070 ed 74 cb dd 5f c5 d3 6d b1 9b 0a d8 35 cc a7 e3

MD5(file1.dat) = a4c0d35c95a63a805915367dcfe6b751

file2.dat:

00000000 d1 31 dd 02 c5 e6 ee c4 69 3d 9a 06 98 af f9 5c
00000010 2f ca b5 07 12 46 7e ab 40 04 58 3e b8 fb 7f 89
00000020 55 ad 34 06 09 f4 b3 02 83 e4 88 83 25 f1 41 5a
00000030 08 51 25 e8 f7 cd c9 9f d9 1d bd 72 80 37 3c 5b
00000040 96 0b 1d d1 dc 41 7b 9c e4 d8 97 f4 5a 65 55 d5
00000050 35 73 9a 47 f0 eb fd 0c 30 29 f1 66 d1 09 b1 8f
00000060 75 27 7f 79 30 d5 5c eb 22 e8 ad ba 79 4c 15 5c
00000070 ed 74 cb dd 5f c5 d3 6d b1 9b 0a 58 35 cc a7 e3
MD5(file2.dat) = a4c0d35c95a63a805915367dcfe6b751



详细情况可查阅此网站:
http://www.tcs.hut.fi/~mjos/md5/


格式化版本请查阅上述网站。

风清云淡
级别: 新手上路
注册时间:
2002-08-23
在线时间:
0小时
发帖:
95
只看该作者 24楼 发表于: 2004-09-05
引用
最初由 freemagic 发布


RSA算法不是基于MD5的。

原理的话,部分文件内容:

// md5.cpp - modified by Wei Dai from Colin Plumb's public domain md5.c
// any modifications are placed in the public domain

#include "pch.h"
#include "md5.h"
#include "misc.h"

NAMESPACE_BEGIN(CryptoPP)

void MD5_TestInstantiations()
{
MD5 x;
}

void MD5::Init()
{
m_digest[0] = 0x67452301L;
m_digest[1] = 0xefcdab89L;
m_digest[2] = 0x98badcfeL;
m_digest[3] = 0x10325476L;
}

void MD5::Transform (word32 *digest, const word32 *in)
{
// #define F1(x, y, z) (x & y | ~x & z)
#define F1(x, y, z) (z ^ (x & (y ^ z)))
#define F2(x, y, z) F1(z, x, y)
#define F3(x, y, z) (x ^ y ^ z)
#define F4(x, y, z) (y ^ (x | ~z))

#define MD5STEP(f, w, x, y, z, data, s) \
w = rotlFixed(w + f(x, y, z) + data, s) + x

word32 a, b, c, d;

a=digest[0];
b=digest[1];
c=digest[2];
d=digest[3];

MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);

MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);

MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);

MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);

digest[0]+=a;
digest[1]+=b;
digest[2]+=c;
digest[3]+=d;
}

NAMESPACE_END


拜託,我是說MD5 演算法是"RSA Security"公司所提出的,

我不是指RSA 演算法是基於MD5,不要誤會了

MD5 的函數庫其實在RSA Security 的網頁即可找到
级别: 圣骑士
注册时间:
2003-08-14
在线时间:
0小时
发帖:
1731
只看该作者 23楼 发表于: 2004-09-05
引用
最初由 leroy 发布


你真的知道MD5 是透過什麼原理運作的嗎..?

MD5 會將要加密的字串( 任何長度也好 ) ,變為長度128bit 的digest code

MD5 是一個單向的雜湊演算,所以就算它每次都會將同樣的字串計成同樣的鍵值

但根本無法從鍵值反推算出原本的字串內容

要基本了解MD5,就到RSA Security 公司的網頁看看吧...


RSA算法不是基于MD5的。

原理的话,部分文件内容:

// md5.cpp - modified by Wei Dai from Colin Plumb's public domain md5.c
// any modifications are placed in the public domain

#include "pch.h"
#include "md5.h"
#include "misc.h"

NAMESPACE_BEGIN(CryptoPP)

void MD5_TestInstantiations()
{
MD5 x;
}

void MD5::Init()
{
m_digest[0] = 0x67452301L;
m_digest[1] = 0xefcdab89L;
m_digest[2] = 0x98badcfeL;
m_digest[3] = 0x10325476L;
}

void MD5::Transform (word32 *digest, const word32 *in)
{
// #define F1(x, y, z) (x & y | ~x & z)
#define F1(x, y, z) (z ^ (x & (y ^ z)))
#define F2(x, y, z) F1(z, x, y)
#define F3(x, y, z) (x ^ y ^ z)
#define F4(x, y, z) (y ^ (x | ~z))

#define MD5STEP(f, w, x, y, z, data, s) \
w = rotlFixed(w + f(x, y, z) + data, s) + x

word32 a, b, c, d;

a=digest[0];
b=digest[1];
c=digest[2];
d=digest[3];

MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);

MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);

MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);

MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);

digest[0]+=a;
digest[1]+=b;
digest[2]+=c;
digest[3]+=d;
}

NAMESPACE_END

Free Magic

......P2P World Supporter......

CPU:-=E5200 OC 3.4=-
RAM:-= 4G =-
HD:-=500G + 320G=-
Monitor:-=24"LCD=-
- 7X24 -
级别: 光明使者
注册时间:
2002-12-02
在线时间:
3629小时
发帖:
12559
只看该作者 22楼 发表于: 2004-09-05
引用
最初由 leroy 发布


你真的知道MD5 是透過什麼原理運作的嗎..?

MD5 會將要加密的字串( 任何長度也好 ) ,變為長度128bit 的digest code

MD5 是一個單向的雜湊演算,所以就算它每次都會將同樣的字串計成同樣的鍵值

但根本無法從鍵值反推算出原本的字串內容

要基本了解MD5,就到RSA Security 公司的網頁看看吧...

是无法逆运算啊~~~~暴力破解虽然是个笨办法但也是个办法~~对吧~~~

来た、見た、勝った!

「花は桜木、人は武士」——一休宗純

燃えましょう!不死鳥!

俺は自分の戦争を始めた、俺は刀だ、俺の敵を必ず一刀両断にする。

昔は空を自由に飛ぶ鳥だったが、翼に矢を受けてしまってな...

小楼春雨伊人,清风樱舞留香。

免费VPN,支持android,如无法访问请先使用Hotspot Shield
http://tenacy-free.com/

Blog
http://www.wujunjie.me

为了防止某些想法被遗忘,也为了便于整理,会贴些疯言疯语——拒绝跨省~O~
级别: 新手上路
注册时间:
2002-08-23
在线时间:
0小时
发帖:
95
只看该作者 21楼 发表于: 2004-09-04
引用
最初由 56824419 发布

你这个是穷举.......知道参数的话并用掉技巧的话一般的家用电脑应该可以很快搞定10位以内的密码- -||


你真的知道MD5 是透過什麼原理運作的嗎..?

MD5 會將要加密的字串( 任何長度也好 ) ,變為長度128bit 的digest code

MD5 是一個單向的雜湊演算,所以就算它每次都會將同樣的字串計成同樣的鍵值

但根本無法從鍵值反推算出原本的字串內容

要基本了解MD5,就到RSA Security 公司的網頁看看吧...
级别: 光明使者
注册时间:
2002-12-02
在线时间:
3629小时
发帖:
12559
只看该作者 20楼 发表于: 2004-09-04
其实。。。。。这个问题早就被发现了(前几个月正好研究了几天MD5>_<)。。。。。(开始没看清楚~~以为有人知道怎么逆运算了>_<)这个问题在MD4中比较明显而已- -|||MD5作为MD4的改进版极少出现这个现像的。。。。。。

来た、見た、勝った!

「花は桜木、人は武士」——一休宗純

燃えましょう!不死鳥!

俺は自分の戦争を始めた、俺は刀だ、俺の敵を必ず一刀両断にする。

昔は空を自由に飛ぶ鳥だったが、翼に矢を受けてしまってな...

小楼春雨伊人,清风樱舞留香。

免费VPN,支持android,如无法访问请先使用Hotspot Shield
http://tenacy-free.com/

Blog
http://www.wujunjie.me

为了防止某些想法被遗忘,也为了便于整理,会贴些疯言疯语——拒绝跨省~O~
级别: 骑士
注册时间:
2003-02-27
在线时间:
0小时
发帖:
1177
只看该作者 19楼 发表于: 2004-09-04
天下什么没有漏洞,只是危害大小而已

各种软件的漏洞天天都被发现,也没什么稀奇,但是只要是被中国人发现的,新闻就要一阵猛炒,现在的媒体呀

[eDtoon]Robo[CHN][TLF][ARC]

Knucwentsutce me Knucwentwecwkp
pzf
级别: 侠客
注册时间:
2003-04-20
在线时间:
0小时
发帖:
383
只看该作者 18楼 发表于: 2004-09-04
所谓漏洞就是可以在很少次数内发生碰撞.从而衍生出类似于冒充用户之类的事情.实现呢.用几十台高端家用电脑连起来就可以.
这个消息chinaunix很早就有了.
不管是md5 rsa 3des.已有大家都网格了.就不存在秘密可言了

[[CHN][edtoon][TLF]eric]
级别: 光明使者
注册时间:
2002-12-02
在线时间:
3629小时
发帖:
12559
只看该作者 17楼 发表于: 2004-09-04
引用
最初由 roytam1 发布
不...是可以的.....可是你需要一部地球模擬器........

你这个是穷举.......知道参数的话并用掉技巧的话一般的家用电脑应该可以很快搞定10位以内的密码- -||

来た、見た、勝った!

「花は桜木、人は武士」——一休宗純

燃えましょう!不死鳥!

俺は自分の戦争を始めた、俺は刀だ、俺の敵を必ず一刀両断にする。

昔は空を自由に飛ぶ鳥だったが、翼に矢を受けてしまってな...

小楼春雨伊人,清风樱舞留香。

免费VPN,支持android,如无法访问请先使用Hotspot Shield
http://tenacy-free.com/

Blog
http://www.wujunjie.me

为了防止某些想法被遗忘,也为了便于整理,会贴些疯言疯语——拒绝跨省~O~
级别: 骑士
注册时间:
2004-04-17
在线时间:
0小时
发帖:
1374
只看该作者 16楼 发表于: 2004-09-04
这个还是关注一下

[img][/img]
级别: 光明使者
注册时间:
2003-02-27
在线时间:
0小时
发帖:
26477
只看该作者 15楼 发表于: 2004-09-04
MD5早就有問題了,它並沒有符合Strong collision resistance
所以才有SHA1的產生 :)

貴方の剣となり、敵を討ち、御身を守った。……この約束を、果たせてよかった

最後に、一つだけ伝えないと

シロウ────貴方を、愛している

级别: 版主
注册时间:
2004-08-29
在线时间:
0小时
发帖:
462
只看该作者 14楼 发表于: 2004-09-04
首先这个假造也不是很容易吧?

汗。。。不过就是假造了又如何?

要是担心这个。。你还不如连网都不要上。。网上到处都是病毒。。

漫游在线:http://tv.popgo.net

柯南在线:
http://tv.aptx.cn
级别: 侠客
注册时间:
2003-03-19
在线时间:
0小时
发帖:
442
只看该作者 13楼 发表于: 2004-09-04
没有任何一种算法是没有漏洞的, 只是大小而已!!Windows XP到处都是洞, 你还不是一样用?!

级别: 圣骑士
注册时间:
2003-04-13
在线时间:
21小时
发帖:
1669
只看该作者 12楼 发表于: 2004-09-02
引用
最初由 56824419 发布
逆运算应该不可能的
不...是可以的.....可是你需要一部地球模擬器........

有事請pm我!   我的廢棄日記 ← 請多多光臨! <(_ _)>

----------------------

-E-D-2-K-----歡-迎-加-為-好-友-!-------
[KOR][TLF][eDtoon][CHN]rt87
[eDtoon][popgo][dmhy][TLF][CHN][KOR][ARC]roytam1
------------------------------
我的Winamp正在播放的歌曲:
级别: 光明使者
注册时间:
2002-12-02
在线时间:
3629小时
发帖:
12559
只看该作者 11楼 发表于: 2004-09-02
逆运算应该不可能的

来た、見た、勝った!

「花は桜木、人は武士」——一休宗純

燃えましょう!不死鳥!

俺は自分の戦争を始めた、俺は刀だ、俺の敵を必ず一刀両断にする。

昔は空を自由に飛ぶ鳥だったが、翼に矢を受けてしまってな...

小楼春雨伊人,清风樱舞留香。

免费VPN,支持android,如无法访问请先使用Hotspot Shield
http://tenacy-free.com/

Blog
http://www.wujunjie.me

为了防止某些想法被遗忘,也为了便于整理,会贴些疯言疯语——拒绝跨省~O~
快速回复

限150 字节
上一个 下一个