در رمزنگاری کلاسیک، رمزنگاری جابجایی (به انگلیسی: Transposition cipher) روشی است که با جابجا کردن حروف عمل رمز کردن را انجام میدهد و با اجرای برعکس آن رمزگشایی صورت میگیرد. از دید ریاضی یک تابع یک به یک بر روی مکان حروف کار رمزکردن را انجام میدهد و معکوس آن برای رمزگشایی استفاده میگردد.رمزهای جابجایی ترتیب حروف را عوض میکنند ولی آنها را تغییر نمیدهند. در ادامه نمونههایی از رمزنگاری جابهجایی معرفی شدهاند.
در این نوع سیستم همانطور که از نام آن برمیآید،ابتدا به تعداد دلخواهی ریل(خط) تشکیل میدهیم. سپس حروف متنی که می خواهیم آن را رمز کنیم را به ترتیب از ابتدای ریل اول به صورت زیگزاگ قرار میدهیم. به عنوان نمونه اگر متن اصلی ما 'WE ARE DISCOVERED. FLEE AT ONCE' باشد متن رمز شدهٔ آن به شکل زیر به دست میآید:
W . . . E . . . C . . . R . . . L . . . T . . . E . E . R . D . S . O . E . E . F . E . A . O . C . . . A . . . I . . . V . . . D . . . E . . . N . .
حال به صورت سطری این حروف را کنار هم قرار میدهیم و به متن زیر میرسیم:
WECRLTEERDSOEEFEAOCAIVDEN
در این سیستم فضای کلید برابر تعداد ریلهایی است که میتوان تعریف کرد. نمونه زبان فارسی برای متن "سلام به علاقهمندان رمزنگاری" با دو سطر به صورت زیر بدست میآید:
س . ا . ب . ع . ا . ه . ن . ا . ر . ز . گ . ر .
. ل . م . ه . ل . ق . م . د . ن . م . ن . ا . ی
حال متن رمز به این صورت خواهد بود: " سابعاه نارزگر لمه هلقمدنمنای"
در این نوع سیستم ابتدا حروف را در جدولی به ابعاد مشخص قرار میدهیم سپس با استفاده از یک الگوی معینی حروف داخل جدول را کنار هم قرار میدهیم و متن رمز شده را به دست میآوریم. برای مثال برای همان متن رمزی سیستم ریلی داریم :
W R I O R F E O E E E S V E L A N J A D C E D E T C X
مسیر خواندن حروف را 'مارپیچی در جهت عقربههای ساعت به سمت داخل از راست بالای جدول' تعریف میکنیم پس داریم:
EJXCTEDECDAEWRIORFEONALEVSE
در مقایسه با سیستم ریلی فضای کلید در حالت بسیار بیشتر است و شامل تمام مسیرهایی است که در جدول بهدست آمده میتوان تشکیل داد.
در این سیستم رمزنگاری ابتدا متن اصلی را در ردیفهایی به طول معین قرار میدهیم سپس جدول به دست آمده را به صورت ستونی اما به صورت درهم ریخته میخوانیم. ترکیب طول ردیفها و جابهجایی انجام شده در انتخاب ستونها کلید را مشخص میکنند.
در سیستم رمز جابهجایی ستونی منظم، فاصلههای اضافی جدول با NULL جایگزین میشود اما در سیستم رمز جابهجایی نامنظم فاصلههای اضافی با Blank جایگزین میشود. فرض کنید می خواهیم جملهٔ WE ARE DISCOVERED. FLEE AT ONCE. را با کلید ZEBRAS رمز کنیم. با توجه به ترتیب حروف در کلمه رمز، ستونها به این ترتیب خوانده خواهند شد: "5 1 4 2 3 6" ؛ پس:
5 1 4 2 3 6 W E A R E D I S C O V E R E D F L E E A T O N C E Q K J E U
با قرار دادن QKJEU به عنوان NULL متن رمز شده به صورت زیر بهدست میآید:
EVLNE ACDTK ESEAQ ROFOJ DEECU WIREE
اما در صورتی که از سیستم رمز نامنظم استفاده کنیم داریم:
5 1 4 2 3 6 W E A R E D I S C O V E R E D F L E E A T O N C E
و متن رمزی بهدست آمده به شکل زیر خواهد بود:
EVLNA CDTES EAROF ODEEC WIREE
این سیستم در سال 1902 توسط Émile Victor Théodore Myszkowski پیشنهاد شد. این سیستم رمزنگاری مشابه جابهجایی ستونی میباشد با این تفاوت که کلید در رمز جابهجایی ستونی در صورتی که حروف تکراری داشته باشد از سمت چپ کوچکترین عدد اختصاص داده میشود در حالی که در این سیستم به حروف یکسان عدد یکسانی داده میشود و هنگامی که می خواهیم متن رمز شده را تشکیل دهیم، ستونهای به عدد یکسان را به صورت ردیفی میخوانیم. ستونهایی که اعداد یکسان ندارند را به همان صورت قبلی یعنی ستونی میخوانیم. واضح است که این سیستم در صورتی که کلید حرف تکراری نداشته باشد مشابه سیستم جابهجایی ستونی میباشد. به عنوان مثال در رمز جابهجایی ستونی برای کلید TOMATO ، ترتیب 532164 به دست میآید ولی در این سیستم برای همین کلمه ترتیب 432143 به دست میآید. اگر با کلید TOMATO بخواهیم متن WE ARE DISCOVERED. FLEE AT ONCE. را رمز کنیم داریم:
3 4 1 2 3 4 W E A R E D I S C O V E R E D F L E E A T O N C E
ROFOA CDTED SEEEA CWEIV RLENE
با توجه به اینکه در این خانواده از سیستمها کاراکترها صرفاً جابهجا میشوند، فرکانس یا پراکندگی کاراکترها در یک متن تغییری نمیکند. پس حملهکننده با در اختیار داشتن درصد پراکندگی حروف میتواند تناظر یک به یکی بین حروف متن و حروف جدول درصد پراکندگی برقرار کند و متن اصلی را بازیابی کند.