একটি উগ্র চার বর্গ সাইফার


17

পটভূমি

এক-ত্রিশ বছর আগে, অপেশাদার ক্রিপ্টোগ্রাফার ফলিক্স ডেলাস্টেল তাঁর চারটি বর্গক্ষেত্রের সাইফারে প্রকাশ করেছিলেন , এটি একটি ডিজিট্রাফিক প্রতিস্থাপনের সাইফার যা 25 অক্ষরের বর্ণমালার দুটি অনুমোদনকে কী হিসাবে স্বীকার করে এবং সেই চিঠিগুলির সমন্বয়ে বার্তাগুলি এনকোড করে।

বেশিরভাগ কলম এবং কাগজের সাইফারের মতো, চার-বর্গাকার সাইফারের আজকের কোনও ক্রিপ্টোগ্রাফিক মান নেই তবে আবিষ্কারের সময় এটির মনোগ্রাফিক অংশগুলির তুলনায় এটি একটি গুরুত্বপূর্ণ সুবিধা পেয়েছিল।

একশো ত্রিশ বছর পরে, অ্যালিস ডেলাস্টেল বর্ণমালার আকার এবং কীগুলির সংখ্যা বাড়িয়ে চার বর্গাকার সাইফারটিকে উন্নত করার সিদ্ধান্ত নিয়েছে। [হদফ ঘ]

কী সেটআপ

বর্ণমালাটিতে নিম্নলিখিত বর্ণগুলি রয়েছে (স্থান দিয়ে শুরু):

 !"#$%&'()*+,-./:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ

একটি পাস বাক্যাংশ দেওয়া, আমরা নীচে এই বর্ণমালা একটি ক্রমবিন্যাস নির্মাণ:

  1. প্রতিটি চরিত্রের প্রথম উপস্থিতি রাখুন।

  2. বর্ণমালা থেকে অব্যবহৃত অক্ষরগুলি তাদের প্রাকৃতিক ক্রমে যুক্ত করুন।

চারটি পাসের বাক্যাংশগুলিকে চারটি কীতে পরিণত করার পরে, আমরা প্রতিটি কীটি পাশের দৈর্ঘ্য 7 এর স্কোয়ারে বিভক্ত করি এবং চারটি ফলক স্কোয়ারটি সাজাই যাতে তারা একটি বড় বর্গ গঠন করে।

উদাহরণস্বরূপ, যদি পাস বাক্যাংশ ছিল

PROGRAMMING PUZZLES & CODE GOLF
POPULARITY CONTESTS & CODE BOWLING
CORRECT HORSE BATTERY STAPLE
DON'T TELL EVE!!!

কীগুলি এইভাবে তৈরি এবং ব্যবস্থা করা হবে:

PROGAMI  POULARI
N UZLES  TY CNES
&CDF!"#  &DBWG!"
$%'()*+  #$%'()*
,-./:;<  +,-./:;
=>?@BHJ  <=>?@FH
KQTVWXY  JKMQVXZ

CORET H  DON'T E
SBAYPL!  LV!"#$%
"#$%&'(  &()*+,-
)*+,-./  ./:;<=>
:;<=>?@  ?@ABCFG
DFGIJKM  HIJKMPQ
NQUVWXZ  RSUWXYZ

জোড়া লাগানো

যেমন একটি সরল পাঠ্য বার্তা দেওয়া

ALICE LOVES BOB.

এর দৈর্ঘ্যকে আরও সমান করতে আমরা 0 বা 1 স্পেস যুক্ত করি এবং এটিকে অক্ষরের জোড়ায় বিভক্ত করি:

["AL" "IC" "E " "LO" "VE" "S " "BO" "B."]

প্রতিটি চরিত্রের জোড়ার জন্য, আমরা প্রথম বর্গক্ষেত্রের প্রথম অক্ষর (পাঠের ক্রম) এবং চতুর্থতে দ্বিতীয়টি সনাক্ত করি।

তারপরে, আমরা বাকী স্কোয়ারগুলিতে অক্ষরগুলি বেছে নিই যে চারটি নির্বাচিত অক্ষর একটি আয়তক্ষেত্র গঠন করে যার পার্শ্বগুলি স্কোয়ারের পাশের সমান্তরাল হয়।

অবশেষে, আমরা দ্বিতীয় এবং তৃতীয় বর্গের নির্বাচিত অক্ষর দ্বারা অক্ষর জোড়াটি প্রতিস্থাপন করি।

আমাদের উদাহরণস্বরূপ স্ট্রিংয়ের জন্য, এটি ফলন করে

["PP" "A@" "E " "YT" "ZE" "EH" "=T" "<-"]

নিম্নলিখিত সিফেরটেক্সট ফলাফল:

PPA@E YTZEEH=T<-

কার্য

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা চারটি পাস বাক্যাংশ এবং একটি প্লেইন টেক্সট গ্রহণ করে, এটি এনক্রিপ্ট করার জন্য চার-বর্গ সাইবারের উপরের রূপটি ব্যবহার করে এবং ফলস্বরূপ সিফারটেক্সট প্রদান করে।

বিবরণ:

  • পাঁচটি ইনপুট স্ট্রিং সম্পূর্ণ বর্ণিত বর্ণমালার অক্ষর নিয়ে গঠিত।

  • পাঁচটি ইনপুট স্ট্রিং যে কোনও ক্রমতে পড়তে পারে, যেমন, একটি একক স্ট্রিং নিউলাইন দ্বারা বা পাঁচটি স্ট্রিংয়ের অ্যারে হিসাবে বিস্মৃত হয়।

  • আপনি ধরে নিতে পারেন যে কোনও স্ট্রিং খালি নেই।

  • আউটপুট অবশ্যই একটি একক স্ট্রিং হতে হবে।

    আপনি যদি আউটপুটটি STDOUT এ মুদ্রণ করতে চান, আপনি কেবল সিফারেক্সটেক্সের অক্ষর এবং (allyচ্ছিকভাবে) একটি ট্রেলিং নিউলাইন মুদ্রণ করতে পারেন।

  • স্ট্যান্ডার্ড বিধি প্রযোজ্য।

পরীক্ষার মামলা

সমস্ত পরীক্ষার ক্ষেত্রে, প্রথম চারটি স্ট্রিংগুলি পড়ার ক্রমে মূল স্কোয়ারের সাথে এবং শেষ ইনপুট স্ট্রিং টেক্সটটির সাথে সামঞ্জস্য করে।

ইনপুট

PROGRAMMING PUZZLES & CODE GOLF
POPULARITY CONTESTS & CODE BOWLING
CORRECT HORSE BATTERY STAPLE
DON'T TELL EVE!!!
ALICE LOVES BOB.

আউটপুট

PPA@E YTZEEH=T<-

ইনপুট

 !"#$%&'()*+,-./:;<=>
 !"#$%&'()*+,-./:;<=>?@ABCDE
 !"#$%&'()*+,-./:;<=>?@ABCDEFGHIJKL
 !"#$%&'()*+,-./:;<=>?@ABCDEFGHIJKLMNOPQRS
HELLO, WORLD! 

আউটপুট

LALLR)#TROKE !

ইনপুট

,'K AB-Q=?@("W$>XM).C#<I:G!OLP*+;SZJTU%NED/&VFHRY
:,-D$C<SU=IYHFVA;! JG/M&L+WT%#.Q@(N*R")EZOBKX?'>P
L()JX,BND?Z<>P*FU%=O@&KIC+A!Y:;$SWHR.EMG'/T"QV #-
<->CI")AP Q:+U;O/F(KH&ER!MW?X'VJLZ#.$,BSGN@TD%*Y=
SPIN THE PPCG WHEEL OF BLAME!

আউটপুট

#>TE,VK+,ZQ(&<F@RA.NL@DM%NAC&>

ইনপুট

& %(,-#)$@?/=>'*"<:;!.+
=/$- ?;',@#!(&<")%.:>+*
&%-/<?.;$'#:=!( ,>"+*)@
=,<-*?#.'@/;>%!+:(& ")$
HNRA#JX$H %JAV+"GTS,

আউটপুট

GOOD LUCK, HAVE FUN.

উত্তর:


4

সিজেম, 52 50 49 47 46 44 বাইট

l2/qN/'[,32>A,s-f|2/f{~@S+2<.#_7f%_W%.m.m.=}

ইনপুট অর্ডার লাইন 5, 2, 3, 1, 4এটি অনলাইনে চেষ্টা করুন

(@ মার্টিনবাটনারকে -1 বাইট ধন্যবাদ, @ ডেনিসকে -2 বাইট ধন্যবাদ

ব্যাখ্যা

l2/           Read the message and split into chunks of 2
qN/           Read rest of input and split by newlines (pass phrases)
'[,32>        Generate " !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ"
A,s-          Remove digits 0123456789
f|            Setwise OR with each pass phrase to remove duplicates, giving keys
2/            Split keys into two pairs
f{ ... }      For each message chunk...
  ~             Unwrap key pairs
  @S+2<         Add a space to the message chunk then cap to length 2
  .#            Find the two chars in keys 1, 4
  _7f%          Copy indices and perform modulo 7 on both
  _W%           Copy and reverse
  .m.m          Vectorised subtraction twice
  .=            Apply both indices to keys 2, 3

সূচকের জন্য, আমরা অন্তত এতগুলি অর্থপূর্ণ অঙ্ক বেস 7. অদলবদল করার, উদাহরণস্বরূপ চাই, প্রথম উদাহরণস্বরূপ ALসূচকের হয় 4এবং 7যথাক্রমে কী 1 এবং 4। বেস 7 এ, এটি [0 4]এবং [1 0]। অন্তত এতগুলি অর্থপূর্ণ অঙ্ক সোয়াপিং দেয় [0 0]এবং [1 4], অর্থাত্ 0এবং 11, এবং এই অনুরূপ Pএবং Pযথাক্রমে কী 2 এবং 3।

তবে বেস রূপান্তর করার পরিবর্তে কোডটি নিম্নলিখিতটি করে:

[4 7]     A: Initial indices
[4 0]     B: Indices mod 7
[0 4]     C: Reverse of B

[4 -4]    B-C
[0 11]    A-(B-C)

6

পাইথ, 74 71 বাইট

L+%eb7*7/hb7Jcms+oxdN{d--CMr33 91`MTd.z2ssm@VeJ,ydy_dCmxLhdedC,hJ.tcz2d

সম্ভবত অনেকটা অনুকূলিত হতে পারে। আমি প্রচুর জিপিং ব্যবহার করি ।

নিম্নলিখিত ক্রমে ইনপুট নেয়:

ALICE LOVES BOB.
PROGRAMMING PUZZLES & CODE GOLF
DON'T TELL EVE!!!
POPULARITY CONTESTS & CODE BOWLING
CORRECT HORSE BATTERY STAPLE

আমি কি আপনার ইনপুট অর্ডার ধারণাটি চুরি করতে পারি?
মালটিসেন

পছন্দ করুন
orlp

4

পাইথ - 88 86 83 78 76 75 72 বাইট

8 টি বাইটস সংরক্ষণ করেছেন @ অর্পলকে ধন্যবাদ

ওয়াহা খুব দীর্ঘ, আমি এতে খুব অসন্তুষ্ট, তবে স্কোয়ারগুলি পরিচালনা করার জন্য আরও ভাল উপায়ের সন্ধান করার জন্য কেবল এটি পোস্ট করা।

Jm+oxdN{d-+d-CMr33 91`MTd.zsms@VtPJ,+*7hKs.DR7xV,hJeJdeK+*7@K2@K1C.tcz2d

এটি এখানে অনলাইনে চেষ্টা করুন


আপনি প্রতিস্থাপন করতে পারেন c+e.z*%le.z2d2সঙ্গে C.tce.z2d। জিজ্ঞাসা করবেন না :)
orlp
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.