مرتب سازی مقایسه ای و شمارشی

جهت مرتب سازی یک حجم از دیتای ورودی دو مکانیزم قالب مرتب سازی شمارشی و مرتب سازی مقایسه ای وجود دارد. حد پایین مجانب مرتب سازی مقایسه ای برابر ((Θ(nlog(n است، که در الگوریتم های مرتب سازی هیپ و مرتب سازی ادغام پیاده شده اند. کاهش مجانب پایین در الگوریتم های شمارشی محقق شده است. ازجمله آن می توان مرتب سازی مبنایی نام برد.

ادامه خواندن مرتب سازی مقایسه ای و شمارشی

متناقض نمای روز تولد

امروز مسئله متناقض نمای روز تولد را مرور می کردم، یک چیز که برای من خیلی جالب بود، علی رغم فواید شهود، گاهی وقت ها شهود باعث دردسر می شود. شهود گرایی در ریاضیات تا چه حد مناسب است؟

ادامه خواندن متناقض نمای روز تولد

الگوریتم استراسن جهت ضرب ماتریس ها

یکی از راه های طراحی الگوریتم شکستن مسیله به زیرمسیله های کوچکتر می باشد، در کتاب های الگوریتم  این روش divide and conquer نامیده می شود. در این پست ابتدا به شرح الگوریتم استراسن و سپس پیاده سازی آن در جاوا خواهیم پرداخت.

ادامه خواندن الگوریتم استراسن جهت ضرب ماتریس ها

RSAکد جاوا رمزنگاری

در این پست کد الگوریتم RSA که در جاوا پیاده سازی شده آورده شده است. جاوا از طرفی یک زبان سطح بالا است، من الگوریتم را خودم توسعه دادم، تولید اعداد تصادفی اول  که در رمزنگاری مورد استفاده شده است، را بنده با تابع راندم پیاده سازی کردم، از طرفی کد این اگوریتم  از این  لینک پیدا کردم، سورس از دوره آموزش جاوا دانشگاه پرینستون است، در کل با استفاده از متدهای کاربردی جاوا از در کمتر  10 خط این الگوریتم رمزنگاری را پیاده کرده است.

ادامه خواندن RSAکد جاوا رمزنگاری

RSAالگوریتم رمزنگاری

رمزنگاری (RSA (Rivest–Shamir–Adlemanرمزنگاری با کلید عمومی یا نامتقارن می باشد. نام این رمزنگاری از  نام سه  دانشمند که این الگوریتم رمزنگاری را پیدا کرده اند، گرفته شده است.  این الگوریتم اولین بار در دانشگاه MIT مطرح شد. نقطه مقابل این نوع رمزنگاری ها رمزنگاری با کلید خصوصی یا متقارن است. در رمزنگاری با کلید خصوصی بین هرنود فرستنده و گیرنده فقط یک کلید خصوصی وجود دارد، افشای این کلید خصوصی امنیت همه کاربران را  به خطر خواهد انداخت، لذا برای استفاده از رمزنگاری متقارن به صورت امن تر، فرستنده باید برای همه گیرنده های خود یک کلید خصوصی منحصربه فرد تعریف کند. هنگامی که تعداد گیرندها زیاد نباشد، مشکل خاصی ایجاد نخواهد شد، اما وقتی تعداد گیرنده ها به چندصد هزارنفر برسد، ذخیره و بازیابی آنها خود مشکلی بزرگ است. در نتیجه در رمزنگاری با کلید نامتقارن از یک کلید عمومی و کلید خصوصی استفاده می شود. کلید عمومی در دسترس همگان می باشد، اما کلید خصوصی کلیدی است که با آن می توان دیتا کد شده خود را انکد کرد. الگوریتم رمزنگاری RSA به گونه ای است، که با در دست داشتن کلید عمومی نمی توان به کلید خصوصی دست پیدا کرد.

ادامه خواندن RSAالگوریتم رمزنگاری