CryptoMath

سایتی برای آشنایی با رمزنگاری

CryptoMath

سایتی برای آشنایی با رمزنگاری

SageMath

System for Algebra and Geometry Experimentation


sagemath یک نرم‌افزار ریاضی است که بسیاری از شاخه‌های ریاضی از جمله جبر مجرد، جبر خطّی، نظریه‌ی اعداد و نظریه‌ی گراف، آمار و احتمال و مثل همه‌ی نرم‌افزار‌های ریاضی دیگر ریاضی عمومی و بهینه‌سازی و آنالیز عددی را می‌پوشاند. امّا آن‌چه سبب شده تا در این وبگاه به معرفی این نرم افزار بپردازم بسته‌ها و توابع مرتبط با رمزنگاری تعبیه شده در این نرم‌افزار و از آن مهم‌تر استقبال جامعه رمزنگاری در استفاده از این نرم‌افزار بوده است.


در جامعه‌ی دانشگاهی ایران (و جهان) نرم افزار‌های ریاضی نظیر Matlab ،Maple و Mathematica بیشتر شناخته شده‌اند. این نرم افزار‌ها هر یک در زمینه‌ی خاصی قدرتمند هستند برای مثال Matlab برای محاسبات ماتریسی و هر آن‌چه بتوان با ماتریس مدل کرد قدرت زیادی دارد علاوه بر آن بیشتر از هر نرم‌افزار ریاضی دیگر در جامعه مهندسی شناخته شده و جعبه‌ابزارهای زیادی به آن افزده شده و به نوعی آن را به یک نرم افزار همه‌کاره در مهندسی تبدیل کرده و در بسیاری از رشته‌های مهندسی مثل برق، مکانیک، مهندسی شیمی و ... نیز از آن استفاده می‌شود. اما این نرم افزار، علی‌رغم اپلیکیشن Mupad تعبیه شده در آن برای محاسبات نمادین، در محاسبات نمادین حرفی برای گفتن ندارد، در عوض Maple و Mathematica در محاسبات نمادین خوب عمل می‌کنند. قصد ندارم در این نوشته جایگزینی برای نرم‌افزار‌های فوق معرفی کنم چون همه‌ی ما به نوعی به نرم افزار‌های فوق عادت کرده‌ایم و ترک عادت موجب مرض است، بلکه قصد دارم تا شما را با نرم‌افزاری دیگر که بیشتر مناسب رمزنگاری است آشنا کنم.

sage اولین بار در ۲۴ فوریه‌ی ۲۰۰۵ به عنوان یک نرم‌افزار متن‌باز و رایگان تحت گواهی نامه‌ی GNU GPL و با هدف اولیه‌ی ((نرم افزاری متن‌باز و جایگزین برای Magma و Maple و Mathematica, Matlab)) تحت سرپرستی ریاضی‌دانی از دانشگاه واشنگتون به نام ویلیام آرتور اشتاین منتشر شد.


ویلیام اشتاین- سرپرست پروژه sagemath

http://www.wstein.org

سیج نرم‌افزاری پایتون مبنا است و شما می‌توانید برنامه‌هایتان محیط سیج را به زبان پایتون بنویسید. به این ترتیب به راحتی می‌توان توابع و رویه‌ها را در آن تعریف کرد ضمن این که از ویژگی شئ‌گرایی به خوبی پشتیبانی می‌کند. همان‌طور که در تیتر این مطلب مشاهده می‌کنید کلمه Sage مخفف عبارت System for Algebra and Geometry Experimentation و به معنای سامانه‌ی برای آزمایش‌های جبری و هندسی است.

خصوصیات بارز  نرم افزار sagemath:

  • محیط کاربری گرافیکی مبتنی بر مرورگر و سازگار با انواع مرورگرهای اینترنتی از جمله  Firefox, Opera, Konqueror, Google Chrome , Safari

  •  رابط کابری command-line با استفاده از IPython علاوه بر رابط گرافیکی

  • پشتیبانی از پردازش موازی با استفاده از پردازنده‌های چند هسته‌ای و یا چند پردازنده

  • حساب دیفرانسیل و انتگرال با استفاده از Maxiama و Sympy

  • جبر خطّی عددی با استفاده از GSL و SciPy و NumPy

  • کتاب‌خانه‌ای شامل توابع مقدماتی و پیشرفته‌ی ریاضی

  • رسم دو و سه بعدی گراف توابع عددی و یا نمادین

  • محاسبات ماتریسی (البته نه به سادگی کار با ماتریس‌ها در Matlab)

  • کتاب‌خانه‌ی آمار چند متغیره با استفاده از R و SciPy

  • حاوی توابعی آماده برای آنالیز و بصری سازی گراف‌ها و تحقیق در زمینه‌ی نظریه‌ی گراف

  • کتاب‌خانه‌‌‌‌ی شامل بسیاری از توابع نظریه اعداد

  • پشتیبانی از اعداد مختلط و دقت دلخواه در محاسبات و از همه مهم‌تر پشتیبانی خوب از محاسبات نمادین

  • حاوی کتاب‌خانه‌های استاندارد Python

  • اجرای کدهای Fortran و C و C++ ,Cython 

  • قابلیت فراخوانی از طریق نرم‌افزار Mathemtica

  • کتاب‌خانه‌ی حاوی  توابع مرتبط با رمزنگاری کلاسیک و مدرن

  •  شامل بسته‌های نرم‌افزاری در زمینه‌ی جبر از جمله Groebner Basis و SatSolver که در حملات جبری به سامانه‌های رمزنگاری مورد استفاده قرار می‌گیرند

  • سهولت کار با حلقه‌ی اعداد گویا و صحیح و حلقه‌های چند جمله‌ای با بیش از یک متغیر و نیز حلقه‌های خارج قسمتی و میدان‌های متناهی در مقایسه با نرم‌افزارهایی نظیر CoCoA

  • استفاده از تکنیک‌های پردازش کلمات شامل ویرایش فرمول‌ها و پشتیبانی  از latex برای نمایش زیبای خروجی‌های نمادین

  • قابل استفاده در سیستم‌‌عامل‌های مختلف از جمله لینوکس و ویندوز

  • این نرم‌افزار دارای یک نسخه آنلاین نیز هست. خوبی نسخه آنلاین این است که تقریبا کامل است و بیشتر کتاب‌خانه‌های اختیاری را در بردارد و نیازی نیست تا کتاب‌خانه‌ خاصی را به آن اضافه کنید. مهم‌تر از همه این که برخلاف نرم‌افزارهایی نظیر متلب که برای استفاده از نسخه آنلاین آن‌هم باید لایسنس داشته باشید، استفاده از نسخه آنلاین این نرم‌افزار کاملا رایگان و ساده است و شما با ساختن یک حساب کاربری که فقط به یک ایمیل و یک پسورد نیاز دارد می‌توانید به‌صورت آنلاین از این نرم‌افزار استفاده کنید.  پیشنهاد می‌کنم با مراجعه به لینک زیر یک‌بار این‌کار را انجام دهید.


توسعه نرم افزار sage

وقتی ویلیام اشتاین سرپرست پروژه سیج ، این نرم‌افزار را طراحی می‌کرد، نرم‌افزار‌های ریاضی متن باز زیادی به زبان‌های مختلف از جمله C و Fortran  و Python نوشته شده بودند. در این زمان توسعه دهندگان سیج به‌جای اختراع دوباره چرخ سعی کردند و افزودن یک نرم‌افزار دیگر به لیست نرم‌افزار‌های ریاضی موجود و به عبارت دیگر به جای نوشتن یک نرم‌افزار ریاضی از صفر، به جمع آوری بسته‌های آماده‌ی ریاضی که تا آن زمان نوشته شده بود در یک قالب واحد اقدام کردند به طوری که کاربر برای کار با آن‌ها فقط کافی است با زبان Python آشنایی داشته باشد(که برای شروع یک آشنایی مقدماتی با این زبان کافی است). علاوه بر این sage شامل صدها و هزاران خط کد منحصر بفرد است که ضمن افزودن برخی قابلیت‌های جدید به این بسته‌های آماده، به برقراری ارتباط بین این اجزا و ماژول‌های آماده می‌پردازند.

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


عملکرد و کارایی

اگر مایل باشید این نرم‌افزار را روی کامپیوتر خود داشته باشید، هم نسخه‌ی از پیش کامپایل شده(باینری) و هم سورس کد این نرم افزار در صفحه‌ی دانلود رسمی نرم‌افزار در دسترس هستند. اگر سورس کد برنامه را دانلود کنید، پس از دانلود باید آن را روی کامپیوتر خود کامپایل کنید که یکی از مزایای این روش این است که بسیاری از کتاب‌خانه‌های نرم‌افزار نظیر ATLAS و FLINT و NTL در هنگام کامپایل شدن، با در نظر گرفتن تعداد پردازنده‌ها و حجم حافظه‌ی نهان یا cash هر یک از پردازنده‌های کامپیوتر مقصد، متناسب با سخت افزار رایانه شما کامپایل و در نتیجه تنظیم و بهینه خواهند شد.لازم است بدانید روش مذکور علی‌رغم مزایای شمرده شده به مبتدیان توصیه نمی‌شود چرا که کامپایل نرم‌افزار جدای از وقت‌گیر بودن نیاز به تجربه‌ دارد و ممکن است پس از دانلود اصلا مؤفق به کامپایل نشوید چرا که همان طور که گفته شد این امر نیازمند دانش و تجربه‌ی بیشتری است.  راه ساده‌تر که البته مزیت‌های شمرده شده در بند قبل را نخواهد داشت دانلود فایل از پیش دانلود شده‌ی نرم‌افزار به صورت باینری و نصب آن بر روی کامپیوتر مقصد است (که البته بنده خود از روش دوّم استفاده کردم!) کاری که در مورد بسیاری از نرم‌افزارهای ویندوز و شاید هم لینوکس انجام می‌دهیم... پذیرش لایسنس و چند بار کلیک بر روی گزینه‌ی NEXT و بعد استفاده از نرم‌افزار!


بسته‌های نرم‌افزاری تعبیه شده در SageMath

همان‌طور که قبل از این هم ذکر کردم فلسفه‌ی سیج استفاده از کتاب‌خانه‌های متن‌باز ریاضی موجود بود، به همین خاطر این نرم‌افزار از بسیاری از کتاب‌خانه‌های نوشته‌شده در سایر پروژه‌ها نظیر Singular و Maxima و GAP وام گرفته و شما بخشی از این بسته‌های نرم‌افزاری مورد استفاده در سیج را می‌توانید در جدول زیر مشاهده نمایید.







نظرات  (۳)

عالی و زیبا! ممنون
پاسخ:
سلام.
نظر لطف شما است.
امیدوارم خدا توفیق دهد تا بتوانم مطالب مفیدتر و بیشتری را در اختیار علاقه‌مندان قرار دهم.
بزودی قصد دارم روش حمله به سامانه‌های متقارن با استفاده از نرم‌افزار سیج را در وبلاگ قرار دهم.

سلام
شما مطالب قبلیتونو پاک میکنین؟
اخه من قبلا نظرداده بودم و شما پاسخ داده بودین
اما الان پیداش نمیکنم!
خیلی ممنون 

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی