یه نویسنده

مقاله، کتاب، برنامه و ...

مقاله، کتاب، برنامه و ...

یه نویسنده

وبلاگی برای فعالیتهای پژوهشی و برنامه نویسی کامپیوتر، که شاید دفتر یادداشتی از دانسته‌های روزانه‌ی من باشد(شاید به‌کار شما هم بیاید). مطالبی که از دنیای کدباز جمع‌آوری میکنم و برای علاقه‌مندان این شاخه از فناوری انتشار میدهم. بیشتر نوشته‌های وبلاگ را برنامه‌نویسی‌php و سیستم‌عامل لینوکس تشکیل می‌دهند.

طبقه بندی موضوعی

الگوریتم aes بین زبانهای مختلف

چند وقت پیش در یکی از کارها اومدیم از الگوریتم aes برای رد و بدل متن بین زبان #c و c استفاده کنیم. نا گفته نماند که پدرمان درآمد چون مایکروسافت طبق معمول برای راحت تر کردن کار برنامه نویس(به قول خودش) کلا این الگوریتم رو دگرگون کرده بود و اصلا دو تا خروجی ها یکسان نبودن بعد از کلی زیر رو کردن وب یه بنده خدایی توی stackoverflow اومده یه قطعه کد گذاشته که کار ما راه افتاد. البته این تجربه شد تا از این به بعد قبل از کد زدن ببینم شاید اصلا در استفاده از این روش مشکلی باشه و اتفاقا هم بود چون این برنامه نویس بنده خدا کلا داکیومنت aes مایکروسافت رو درسته قورت داده بود تا تونسته بود نوع padding و cbc و چیزای دیگه رو پیدا کنه و تطبیقش بده با c.

این گذشت و تا چند روز پیش مجبور بودم یه رشته متن رو بین زبان پایتون و php  رد و بدل کنم. دوباره توی stack گشتم و دیدم یه نفر تگه برنامه تمیزی نوشته بود. هر چند از padding جالبی استفاده کرده بود یدونه کاراکتر } نوع padding بود.

البته این بار مشکل به اندازه #c نبود چرا که نا سلامتی با دو تا زبان برنامه نویسی پدر و مادر دارد طرف بودیم. این کد رفته بود از ماژول crypto.cipher استفاده کرده بود. منم با نصب و استفادش مشکلی نداشتم

پروژه پیش رفت و طبق روال موقع کامپایل برنامه رسید که در تمام ویندوزهای 7 براحتی اجرا میشد ولی در xp ارور زیر رو داشت

actually the encrypted IV which was prefixed to the ciphertex

البته برای برطرف کردن این خطا دیگه تمام راه ها رو برای برطرف کردن خطا رفتم ولی اصلا جواب ندارد. تا به جایی رسیدم که رفتم توی باگ ریپورت پروژه یدونه issue گذاشتم(اینجا). البته الان که دارم مینویسم این پست رو کسی بهش جواب نداده.

و اما روز از نو روزی از نو. من ماندمو و پیدا کردن الگوریتم دیگری برای پروژه. تا این با کمی جستجو به اینجا رسیدم. که واقعا خدا خیرشون بده.

کارشون واقعا جای تشکر داره اومده بود از پایه بر حسب ریاضیات و base64 الگوریتم aes رو راه انداخته بود. و جالب تر این که برای سه تا زبان php,python,javascript این کد رو نوشته بود و شما کافی بود libraryهای نوشته شده رو در برنامه فراخوانی کنید و ازش استفاده کنید. همچنین در بین زبانی هم درست کار میکرد و اگر مثلا با javascript کد میکردی در php و python برای دیکد کردنش همون خروجی مورد انتظار رو داشتی. 

من کل page و تمام سورس کدهارو اینجا میزارم تا دوستان هم استفاده کنن.

python


import aes
text = "Hello, world!"
password = "itsmysecret"
blocksize = 256   # can be 128, 192 or 256
crypted = aes.encrypt( text, password, blocksize )
# do something
decrypted = aes.decrypt( crypted, password, blocksize )
php

<?php
 
require_once('aes.class.php');
 
$text = 'Hello, world!';
$password = 'itsmysecret';
$blocksize = 256;  // can be 128, 192 or 256
 
$crypted = AES::encrypt( $text, $password, $blocksize );
// do something ...
$decrypted =  AES::decrypt( $crypted, $password, $blocksize );
?>( crypted, password, blocksize )
javascript
<?php
var text = 'Hello, world!';
var password = 'itsmysecret';
var blocksize = 256;   // can be 128, 192 or 256
 
var crypted = AES.encrypt( text, password, blocksize );
// do something...
var decrypted = AES.decrypt( crypted, password, blocksize );
?>
دانلود تمام محتویات و کدهای این پست
دریافت
عنوان: الگوریتم aes
حجم: 1020 کیلوبایت

نظرات  (۳)

سلام خسته نباشید میشود  اموزش فریمورک laraver شروع کنید خیلی ممنون میشود

سلام خسته نباشید ببخشید این سوال اینجا می پرسم  :

من چندروز پیش  رفت برای استخدام تو یه شرکت  برنامه نویس خیلی خوب . مسئول استخدام  بود رفت پیش و  چند سوال از من  در مورد  بعضی ارایه ها می کرد  اصول طراحی کرد من کفت چون از فریمورک استفاده می کند  و اون تابع چندان به کار نیومد تو ذهن نیست  بعد من  کفت خوب شما بیا کد من ببنی کفت یه سوال بکو تا  به صورت عمل کد بزنم   به زور کفت بعضی کد مو دید   بعد  کفت شما 3 ماه اموزش نیاز دارد  نمی دانم حالا چی شد کفت دیدم یکدفع  کفت یه ماه دیکر  بیا برای مصاحبه مجدد  من دوتا سوال از شما داشته 

ایا به نظر شما من دوباره برم برای مصاحبه  تو شرکت  یانه 

و لطفا یه توضیع درمورد Design Pattern  بهم بده یا مقاله یا فیلم اگر هستی بهم معرفی کنید    چون سوال  که از من پرسید کفت: از چی Design Pattern استفاده می کنی 
من توی اینترنت چیز زیاد پیدا نکردم  


ممنون مرسی  
پاسخ:
طبق توضیحات شما پی بردم که ایشون خودشون آدم بیسوادی بودن و گرنه کسی که کارمند نیاز داره مردم رو سرکار نمیزاره. برو سه ماه بیا آموزشی و یه ماه دیگه بیا مصاحبه
design pathernها یا الگورهای طراحی. که در بعضی جاها بسته به نیاز هست و در بعضی جاها روش طراهی هست. چیزی که بیشتر ازش حرف به میان میاد تا پیاده سازی و استفاده از اون روش
مثلا شما کانکشن با دیتابیس. خب این کانکشن یک بار ساخته میشه و در کل مدت اجرای برنامه(منظور زمانی که پنجره مرورگر app رو اجرا میکنه تا لود کاملش) مورد استفاده قرار میگیره. این میشه یک نمونه ساختن از روی یک کلاس و استفاده از اون که بهش میگن singleton. یا دیگر الگوهای این چنین که هم براش کتاب نوشته شده و هم فیلم های خوبی توی اینترنت هست. در یوتیوب دنبال php design pathern بگردید یه مجموعه ویدیو بسیار خوب ازش هست

 سلام مرسی  ممنون از کمک تون 

ارسال نظر

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