DES 算法 C51 单片机

胖子 posted @ 2011年3月09日 15:48 in 单片机程序 with tags 信息安全 DES C51 单片机 加密技术 , 6143 阅读

      顶顶大名的DES算法大家都知道吧,呵呵!这里就不用多做介绍了,关于它的c源码,网上一搜一大把,虽然很多是不正确的实现,但是也有正确的,比如:http://www.cnblogs.com/erwin/archive/2009/04/14/1435288.html这位达人的算法实现个人认为还是不错的,至少它的加密结果是正确的,而且结构相当清晰,虽然还有点小bug(可以看这篇日志下面的评论),但是胖子认为自己是写不出这么好的程序(DES太可怕啦)!如果说有童鞋怀疑其加密结果的正确性,或者想验证一下自己写的DES程序的结果是否正确,胖子在这里提供一个比较权威的工具,你到中文wiki上找到DES的介绍页面,页面下方有个链接,是一个DES的实现,当然是用的javascript,不过它限制了密钥的不能更改,你可以保存页面后,把那个textbox的属性改一下就可以验证了。只输入第一个密钥,则加密算法就是DES(http://people.eku.edu/styere/Encrypt/JS-DES.html)。

        好了,废话不多说了,该进入今天的主题了。就是C51单片机上DES算法的实现。众所周知,51单片机的ram很小,胖子用的这个ram+flash才512byte,这对于DES的实现提出了非常苛刻的要求。胖子自问没有时间搞这个,所以就求助谷歌与百度大叔,花费了n久,历经n次劫难,最终取得真经。以下就是程序源码:

 

#include <string.h>
#include <stdlib.h>
#include <reg52.h>
static unsigned char code DesIp[] =
{ 
	58, 50, 42, 34, 26, 18, 10, 2,
	60, 52, 44, 36, 28, 20, 12, 4,
	62, 54, 46, 38, 30, 22, 14, 6,
	64, 56, 48, 40, 32, 24, 16, 8,
	57, 49, 41, 33, 25, 17, 9,   1,
	59, 51, 43, 35, 27, 19, 11, 3,
	61, 53, 45, 37, 29, 21, 13, 5,
	63, 55, 47, 39, 31, 23, 15, 7
};



static unsigned char code DesIp_1[] =
{
	40, 8,  48, 16, 56, 24, 64, 32,
	39, 7,  47, 15, 55, 23, 63, 31,
	38, 6,  46, 14, 54, 22, 62, 30,
	37, 5,  45, 13, 53, 21, 61, 29,
	36, 4,  44, 12, 52, 20, 60, 28,
	35, 3,  43, 11, 51, 19, 59, 27,
	34, 2,  42, 10, 50, 18, 58, 26,
	33, 1,  41, 9,  49, 17, 57, 25
};



static unsigned char code DesS[8][4][16] = 
{
	{
		{14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7},
		{0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8},
		{4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0},
		{15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13}
	},
	
	{
		{15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10},
		{3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5},
		{0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15},
		{13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9}
	},
	
	{
		{10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8},
		{13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1},
		{13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7},
		{1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12}
	},
	
	{
		{7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15},
		{13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9},
		{10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4},
		{3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14}
	},
	
	{
		{2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9},
		{14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6},
		{4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14},
		{11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3}
	},
	
	{
		{12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11},
		{10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8},
		{9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6},
		{4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13}
	},
	
	{
		{4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1},
		{13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6},
		{1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2},
		{6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12}
	},
	
	{
		{13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7},
		{1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2},
		{7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8},
		{2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11}
	}
};



static unsigned char code DesE[] =
{
	32, 1, 2, 3, 4, 5,
	4, 5, 6, 7, 8, 9,
	8, 9, 10, 11, 12,13,
	12, 13, 14, 15, 16, 17,
	16, 17, 18, 19, 20, 21,
	20, 21, 22, 23, 24, 25,
	24, 25, 26, 27, 28, 29,
	28, 29, 30, 31, 32, 1
};



static unsigned char code DesP[] = 
{
	16, 7, 20, 21,
	29, 12, 28, 17,
	1, 15, 23, 26,
	5, 18, 31, 10,
	2, 8, 24,  14,
	32, 27, 3, 9,
	19, 13, 30, 6,
	22, 11, 4, 25
};



static unsigned char code DesPc_1[] =
{
	57, 49, 41, 33, 25, 17, 9,
	1, 58, 50, 42, 34, 26, 18,
	10, 2, 59, 51, 43, 35, 27,
	19, 11, 3, 60, 52, 44, 36,
	63, 55, 47, 39, 31, 23, 15,
	7, 62, 54, 46, 38, 30, 22,
	14, 6, 61, 53, 45, 37, 29,
	21, 13, 5, 28, 20, 12, 4
};



static unsigned char code DesPc_2[] =
{
	14, 17, 11, 24, 1, 5,
	3, 28, 15, 6, 21, 10,
	23, 19, 12, 4, 26, 8,
	16, 7, 27, 20, 13, 2,
	41, 52, 31, 37, 47, 55,
	30, 40, 51, 45, 33, 48,
	44, 49, 39, 56, 34, 53,
	46, 42, 50, 36, 29, 32
};



static unsigned char code DesRots[] = 
{
	1, 1, 2, 2, 
	2, 2, 2, 2, 
	1, 2, 2, 2, 
	2, 2, 2, 1, 
	0
};



static void movram(unsigned char* source,unsigned char* target,unsigned char length);
static void doxor(unsigned char* sourceaddr,unsigned char* targetaddr,unsigned char length);
static void setbit(unsigned char* dataddr,unsigned char pos,unsigned char b0);
static unsigned char getbit(unsigned char* dataddr,unsigned char pos);
static void selectbits(unsigned char* source,unsigned char* table,unsigned char* target,unsigned char count);
static void shlc(unsigned char* data_p);
static void shrc(unsigned char* data_p);
static void strans(unsigned char* index,unsigned char* target);


static void movram(unsigned char* source,unsigned char* target,unsigned char length)
{
	unsigned char i;
	
	for(i = 0;i < length;i++)/*?????*/
	{
		target[i] = source[i];
	}
}



static void doxor(unsigned char* sourceaddr,unsigned char* targetaddr,unsigned char length)
{
	unsigned char i;
	
	for (i = 0;i < length;i++)/*???*/
	{
		sourceaddr[i] ^= targetaddr[i];
	}
}



static void setbit(unsigned char* dataddr,unsigned char pos,unsigned char b0)	
{
	unsigned char byte_count;
	unsigned char bit_count;
	unsigned char temp;

	temp = 1;
	byte_count = (pos - 1) / 8;
	bit_count = 7 - ((pos - 1) % 8);
	temp <<= bit_count;
	
	if(b0)
	{
		dataddr[byte_count] |= temp;
	}
	else
	{
		temp = ~temp;
		dataddr[byte_count] &= temp;
	}
}



static unsigned char getbit(unsigned char* dataddr,unsigned char pos)	
{
	unsigned char byte_count;
	unsigned char bit_count;
	unsigned char temp;

	temp = 1;
	byte_count = (pos - 1) / 8;
	bit_count = 7 - ((pos - 1) % 8);
	temp <<= bit_count;
	if(dataddr[byte_count] & temp)
	{
		return(1);
	}
	else 
	{
		return(0);
	}
}



static void selectbits(unsigned char* source,unsigned char* table,unsigned char* target,unsigned char count)
{
	unsigned char i;
	
	for(i = 0;i < count;i++)
	{
		setbit(target,i + 1,getbit(source,table[i])); 
	}
}



static void shlc(unsigned char* data_p)
{
	unsigned char i,b0;
	
	b0 = getbit(data_p,1);
	
	for(i = 0;i < 7;i++)
	{
		data_p[i] <<= 1;
		
		if(i != 6)
		{
			setbit(&data_p[i],8,getbit(&data_p[i + 1],1));
		}
	}
	
	setbit(data_p,56,getbit(data_p,28));
	setbit(data_p,28,b0);
}



static void shrc(unsigned char* data_p)
{
	unsigned char b0;
	int i;
	
	b0 = getbit(data_p,56);
	
	for(i = 6;i >= 0;i--)
	{
		data_p[i] >>= 1;
		
		if(i != 0)
		{
			setbit(&data_p[i],1,getbit(&data_p[i - 1],8)); 
		}
	}
	
	setbit(data_p,1,getbit(data_p,29));
	setbit(data_p,29,b0);
}



/* The problem is about yielded in this function */
static void strans(unsigned char* index,unsigned char* target)
{
	unsigned char row,line,t,i,j,b0,b1;
	
	for(i = 0;i < 4;i++)
	{
		row = line = t = 0;
		setbit(&line,7,b0 = getbit(index,i * 12 + 1));
		setbit(&line,8,b1 = getbit(index,i * 12 + 6));
		
		for(j = 2;j < 6;j++)
		{
			setbit(&row,3 + j,getbit(index,i * 12 + j));
		}
		
		t = DesS[i * 2][line][row];
		t <<= 4;
		line = row = 0; 
		setbit(&line,7,getbit(index,i * 12 + 7));
		setbit(&line,8,getbit(index,i * 12 + 12));
		
		for(j = 2;j < 6;j++)
		{
			setbit(&row,3 + j,getbit(index,i * 12 + 6 + j));
		}
		
		t |= DesS[i * 2 + 1][line][row];
		target[i] = t;
	}
}




void des(unsigned char *data_p,unsigned char* key_p,int type)
{
	unsigned char tempbuf[12];
	unsigned char key[7];
	unsigned char i;
	unsigned char j;
	unsigned char count;
	void (*f)(unsigned char* data_p);
	
	selectbits(data_p,DesIp,tempbuf,64);/*????*/
	movram(tempbuf,data_p,8);
	selectbits(key_p,DesPc_1,key,56);/*KEY?????*/
	
	for(i = 0;i < 16;i ++)
	{
		selectbits(data_p + 4,DesE,tempbuf,48);/*????*/
		
		if(type ==1)		//jia mi
		{
			f = shlc;
			count = i;
		}
		else
		{
			count = 16 - i;	
			f = shrc;
		}
		
		for(j = 0;j < DesRots[count];j++)/*KEY ???*/
		{
			f(key);
		}
		
		selectbits(key,DesPc_2,tempbuf + 6,48);/*KEY ????*/
		doxor(tempbuf,tempbuf + 6,6);
		strans(tempbuf,tempbuf + 6);
		selectbits(tempbuf + 6,DesP,tempbuf,32);
		doxor(tempbuf,data_p,4);
		
		if(i < 15)
		{
			movram(data_p + 4,data_p,4);
			movram(tempbuf,data_p + 4,4);
		}
	}
	
	movram(tempbuf,data_p,4);
	selectbits(data_p,DesIp_1,tempbuf,64);
	movram(tempbuf,data_p,8);
}
void main(void)
{
      unsigned char key[8] = {'c','o','m','p','u','t','e','r'
      unsigned char text[8]={'l','e','a','r','n','i','n','g'};
      des(text,key,1);
      
}

          在这里胖子只能说是付出了上网和测试的功劳,至于编码的功劳不敢冒领,可惜不知道作者是谁,在这里向这位达人致敬了smiley~,在这里希望各位需要在单片机上跑DES的各位童鞋,少走点弯路,欢迎转载,当然请注明出处,哈哈~

Avatar_small
pingf 说:
2011年3月12日 23:00

51上aes的实现都有更不要说des了,
不用51这类东西做加密的主要原因还是因为速度
一般来说加密用的设备最好在50MByte/s的速度以上才实用
51的主频都达不到

Avatar_small
胖子 说:
2011年4月19日 21:20

呵呵,胖子用51做des主要是用做边信道攻击的加密设备,因为他比FPGA编程上容易一点,所以第一阶段先用它测试,所以~

Avatar_small
murennan 说:
2011年9月25日 20:31

你好,请问这加密的结果存在哪里呀,我怎么知道加密后的结果是什么?谢谢了,这个DES加密困扰我好长时间了,也是做51单片机的

Avatar_small
lonebone 说:
2013年6月14日 20:52

感谢楼主,这个程序是可以用的,加解密都正确。唯一的缺点就是有点慢,比网上另一个版本慢很多。但那个版本又不能用,真是很郁闷

Avatar_small
SCA 说:
2014年11月23日 14:37

师兄,做侧信道实验的时候,C语言编写的AES算法或者DES等算法,和汇编的区别在哪儿呢?对于这么复杂的算法,感觉用汇编是不是难度很大?

Avatar_small
AP SSC sa 2 Model Pa 说:
2022年9月08日 08:34

SA-2 Exams called Summative Assignment-2 exams are known as Annual final public exams, every year those exams are held at the end of the academic session as Term-2 exams. Every State Board Telugu Medium, AP SSC sa 2 Model Paper English Medium & Urdu Medium Students can download the AP 10th Class SA 2 Model Paper 2023 Pdf with Answer Solutions designed by the Board based on the revised syllabus and curriculum.Class teachers and others have designed and suggested the AP 10th Class SA 2 Model Paper 2023 for all languages and subjects of the course for theory, objective,

Avatar_small
apple.com/bill 说:
2023年7月20日 04:18

Manchmal sind wir schockiert oder besorgt über einige unerwartete Apple-Rechnungsbelastungen, die in Form von Textnachrichten oder E-Mails durchscheinen. Diese Arten von ungewohnten Zahlungen werden häufig auf apple.com/bill für ihre Apple-ID-Kunden angezeigt, die sich nach monatlichen und jährlichen Kontoauszugstransaktionen erkundigen. Dies liegt daran, dass ihre Apple-IDs gehackt wurden oder Kreditkarteninformationen entwendet wurden und ein unschuldiges Kind oder Familienmitglied ohne ihr Wissen eingekauft hat.

Avatar_small
Jharkhand 6th Model 说:
2023年9月13日 20:14

State Council of Educational Research and Training (SCERT) Jharkhand has Going to Conducted High School Aunval Exam 2024, SCERT Jharkhand which is Mainly Responsible for Conducting Exam Every year, This SCERT Jharkhand 6th Exam Very Year More Than 25 Laks of Students Attended, SCERT Jharkhand is Administered by the State Government of Jharkhand and Thrives to Improve the Quality of Jharkhand 6th Model Paper 2024 Education in the state.SCERT Jharkhand is also Responsible for Prescribing the SCERT Jharkhand Model Paper 2024 for the Students Studying in the Jharkhand Affiliated Schools, Jharkhand Question Paper 2024 Designed by Senior Experts Study Materiel help the Students to get an idea about the Final Exam 2024.

Avatar_small
seo service UK 说:
2024年1月13日 22:36

I wanted to thank you for this great read!! I definitely enjoying every little bit of it I have you bookmarked to check out new stuff you post

Avatar_small
보스 이벤트 说:
2024年1月16日 19:02

Pleased to satisfy you! My identify is Loreta. Texas is wherever her household is. Interviewing is exactly exactly where my key profits will appear from but the promotion never ever arrives. The favored hobby for my young youngsters and me is kayaking and now I’m trying to generate dollars with it.

Avatar_small
먹튀폴리스 说:
2024年1月16日 19:31

I wanted to thank you for this great read!! I definitely enjoying every little bit of it I have you bookmarked to check out new stuff you post. So luck to come across your excellent blog. Your blog brings me a great deal of fun.. Good luck with the site.

Avatar_small
캡틴 도메인 说:
2024年1月16日 19:59

Pleased to satisfy you! My identify is Loreta. Texas is wherever her household is. Interviewing is exactly exactly where my key profits will appear from but the promotion never ever arrives. The favored hobby for my young youngsters and me is kayaking and now I’m trying to generate dollars with it.

Avatar_small
먹튀검증커뮤니티 说:
2024年1月16日 20:14

I would like to thank you for the efforts you have made in writing this article. I am hoping the same best work from you in the future as well. In fact your creative writing abilities has inspired me to start my own BlogEngine blog now. Really the blogging is spreading its wings rapidly. Your write up is a fine example of it.

Avatar_small
이기자벳 이벤트 说:
2024年1月16日 20:20

Pleased to meet up with you! My title is Shonda and I enjoy it. Doing magic is what she enjoys performing. He is at the moment a production and distribution officer but he strategies on modifying it. Some time in the earlier he chose to stay in Louisiana.

Avatar_small
해외라이브배팅 说:
2024年1月16日 20:28

Hi I found your site by mistake when i was searching yahoo for this acne issue, I must say your site is really helpful I also love the design, its amazing!. I don’t have the time at the moment to fully read your site but I have bookmarked it and also add your RSS feeds. I will be back in a day or two. thanks for a great site.

Avatar_small
안전놀이터순위 说:
2024年1月16日 20:42

I definitely enjoying every little bit of it. It is a great website and nice share. I want to thank you. Good job! You guys do a great blog, and have some great contents. Keep up the good work. Thanks for writing such a good article, I stumbled onto your blog and read a few post. I like your style of writing.

Avatar_small
토토사이트추천 说:
2024年1月16日 20:43

Pleased to satisfy you! My identify is Loreta. Texas is wherever her household is. Interviewing is exactly exactly where my key profits will appear from but the promotion never ever arrives. The favored hobby for my young youngsters and me is kayaking and now I’m trying to generate dollars with it.

Avatar_small
토토핫보증업체 说:
2024年1月16日 20:47

Confusing information, immense and outlandish structure, as offer especially finished with sharp examinations and thoughts, heaps of striking information and inspiration, the two of which I require, because of offer such an incredible information here

Avatar_small
먹튀사이트 说:
2024年1月16日 21:01

Appreciative for the strengthening on the web diary posting! Fundamentally put your blog segment to my most esteemed blog list and will channel forward for additional updates. Basically expected to record a word to offer imperative because of you for those incredible tips.

Avatar_small
안전놀이터추천 说:
2024年1月16日 21:04

Everyone loves many of the discussions, I actually experienced, I'd prefer additional information in regards to this, for the reason that it is awesome., With thanks to get spreading Why not remain this unique amazing give good results not to mention I just await further with the fantastic blog posts

Avatar_small
가입시 꽁머니 주는 사이트 说:
2024年1月16日 21:15

Everyone loves many of the discussions, I actually experienced, I'd prefer additional information in regards to this, for the reason that it is awesome., With thanks to get spreading Why not remain this unique amazing give good results not to mention I just await further with the fantastic blog posts

Avatar_small
온라인카지노순위 说:
2024年1月16日 21:19

Confusing information, immense and outlandish structure, as offer especially finished with sharp examinations and thoughts, heaps of striking information and inspiration, the two of which I require, because of offer such an incredible information here

Avatar_small
먹튀검증커뮤니티 说:
2024年1月16日 21:29

Took me time to read all the comments, but I really enjoyed the article. It proved to be Very helpful to me and I am sure to all the commenters here! It’s always nice when you can not only be informed, but also entertained!

Avatar_small
룰렛하는법 说:
2024年1月16日 21:32

I think this is an instructive post and it is extremely valuable and proficient. along these lines, I might want to thank you for the endeavors you have made recorded as a hard copy this article. I love the blog. Great post. It is very true, people must learn how to learn before they can learn. lol i know it sounds funny but its very true. .

Avatar_small
안전토토사이트 说:
2024年1月16日 21:48

Pleased to meet up with you! My title is Shonda and I enjoy it. Doing magic is what she enjoys performing. He is at the moment a production and distribution officer but he strategies on modifying it. Some time in the earlier he chose to stay in Louisiana.

Avatar_small
메이저놀이터 说:
2024年1月16日 21:55

Appreciative for the strengthening on the web diary posting! Fundamentally put your blog segment to my most esteemed blog list and will channel forward for additional updates. Basically expected to record a word to offer imperative because of you for those incredible tips.

Avatar_small
라이브바카라 说:
2024年1月16日 21:57

Everyone loves many of the discussions, I actually experienced, I'd prefer additional information in regards to this, for the reason that it is awesome., With thanks to get spreading Why not remain this unique amazing give good results not to mention I just await further with the fantastic blog posts

Avatar_small
แนะนำ เว็บบาคาร่า 说:
2024年1月16日 22:07

Awesome site you have here but I was curious if you knew of any message boards that cover the same topics talked about here? I’d really like to be a part of group where I can get opinions from other experienced people that share the same interest. If you have any suggestions, please let me know. Bless you!

Avatar_small
메이저사이트 说:
2024年1月16日 22:10

Pleased to satisfy you! My identify is Loreta. Texas is wherever her household is. Interviewing is exactly exactly where my key profits will appear from but the promotion never ever arrives. The favored hobby for my young youngsters and me is kayaking and now I’m trying to generate dollars with it.

Avatar_small
토토사이트실험실 说:
2024年1月16日 22:17

Fantastic beat ! I would like to apprentice at the same time as you amend your web site, how can i subscribe for a blog web site? The account aided me a acceptable deal. I were a little bit acquainted of this your broadcast offered brilliant transparent idea|

Avatar_small
에볼루션 说:
2024年1月16日 22:46

Pleased to satisfy you! My identify is Loreta. Texas is wherever her household is. Interviewing is exactly exactly where my key profits will appear from but the promotion never ever arrives. The favored hobby for my young youngsters and me is kayaking and now I’m trying to generate dollars with it.

Avatar_small
메이저사이트 说:
2024年1月16日 23:42

I just want to tell you that I am very new to blogging and definitely savored your page. Very likely I’m want to bookmark your website . You certainly have incredible articles. Thanks a bunch for revealing your web site.Appreciate it. Plenty of postings! https://canadiantoprxstore.com/# canada pharmacies without script

Avatar_small
베트맨토토 说:
2024年1月16日 23:44

Awesome site you have here but I was curious if you knew of any message boards that cover the same topics talked about here? I’d really like to be a part of group where I can get opinions from other experienced people that share the same interest. If you have any suggestions, please let me know. Bless you!

Avatar_small
네임드 说:
2024年1月17日 00:03

We are playground guard without advertising agency of Toto site.Please come to Playground Guard and enjoy betting on various sites such as Toto Site Safety Playground and Major Playground.The list of sites posted on our safe playground list is a list of sites where our watchdog has completed currency exchange and betting checks with multiple accounts for at least one month. is.

Avatar_small
메이저토토 说:
2024年1月17日 00:20

Easily, the article is actually the best topic on this registry related issue. I fit in with your conclusions and will eagerly look forward to your next updates. Just saying thanks will not just be sufficient, for the fantasti c lucidity in your writing. I will instantly grab your rss feed to stay informed of any updates.

Avatar_small
메이저토토 说:
2024年1月17日 00:21

Easily, the article is actually the best topic on this registry related issue. I fit in with your conclusions and will eagerly look forward to your next updates. Just saying thanks will not just be sufficient, for the fantasti c lucidity in your writing. I will instantly grab your rss feed to stay informed of any updates.

Avatar_small
카지노사이트 说:
2024年1月17日 00:34

I am always searching online for articles that can help me. There is obviously a lot to know about this. I think you made some good points in Features also. Keep working, great job! My friend mentioned to me your blog, so I thought I’d read it for myself. Very interesting insights, will be back for more!

Avatar_small
실시간바카라 说:
2024年1月17日 00:40

In each article on our website, product reviews are always placed real reviews, positive and negative about a particular product, as well as links to authoritative sources, where customer feedback is left and recommendations of doctors, experts and specialists in the field of medicine, cosmetology and pharmaceutics are present

Avatar_small
먹튀검증커뮤니티 먹튀사이트 说:
2024年1月17日 01:07

I would like to thank you for the efforts you have made in writing this article. I am hoping the same best work from you in the future as well. In fact your creative writing abilities has inspired me to start my own BlogEngine blog now. Really the blogging is spreading its wings rapidly. Your write up is a fine example of it.

Avatar_small
먹튀다자바도메인 说:
2024年1月17日 01:16

I was very pleased to find this site.I wanted to thank you for this great read!! I definitely enjoying every little bit of it and I have you bookmarked to check out new stuff you post.So luck to come across your excellent blog. Your blog brings me a great deal of fun.. Good luck with the site.

Avatar_small
로투스게임특징 说:
2024年1月17日 01:24

I would like to thank you for the efforts you have made in writing this article. I am hoping the same best work from you in the future as well. In fact your creative writing abilities has inspired me to start my own BlogEngine blog now. Really the blogging is spreading its wings rapidly. Your write up is a fine example of it.

Avatar_small
벳매니아인증업체 说:
2024年1月17日 01:38

Appreciative for the strengthening on the web diary posting! Fundamentally put your blog segment to my most esteemed blog list and will channel forward for additional updates. Basically expected to record a word to offer imperative because of you for those incredible tips.

Avatar_small
먹튀검증 说:
2024年1月17日 01:57

i am out of the blue here. I discovered this board and I in discovering It genuinely supportive and it helped me out a ton. I want to introduce something back and help other people, for example, you helped me I think this is an informative post and it is very useful and knowledgeable. therefore. I would like to thank you for the efforts you have made in writing this article.

Avatar_small
홀덤사이트추천 说:
2024年1月17日 02:04

I am always searching online for articles that can help me. There is obviously a lot to know about this. I think you made some good points in Features also. Keep working, great job! My friend mentioned to me your blog, so I thought I’d read it for myself. Very interesting insights, will be back for more!

Avatar_small
먹튀검증사이트 说:
2024年1月17日 02:22

This is extremely intriguing substance! I have altogether delighted in perusing your focuses and have arrived at the resolution that you are ideal about a significant number of them. You are extraordinary What a good blog you have here. Please update it more often. This topics is my interest. Thank you. . .

Avatar_small
pavzi.com 说:
2024年1月25日 03:38

Pavzi.com is a startup by passionate webmasters and bloggers who have a passion for providing engaging content that is accurate, interesting, and worthy to read. pavzi.com We are more like a web community where you can find different information, resources, and topics on day-to-day incidents or news. We provide you with the finest web content on every topic possible with the help of the editorial and content team.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter