Mathman.gr

  • Full Screen
  • Wide Screen
  • Narrow Screen
  • Increase font size
  • Default font size
  • Decrease font size

Κρυπτογράφηση Knapsack

 

 

 key



Ακολουθεί ο κώδικας εισόδου (input) που παραθέσαμε στο παραπάνω έγγραφο. Όσοι έχουν το λογισμικό Mathematica μπορούν να τον αντιγράψουν και να τον επικολλήσουν. Πιθανώς να χρειαστεί να μετατραπεί το format από text σε input (αφού έχει μαρκαριστεί πρώτα το αντίστοιχο «κελί»). Στη συνέχεια κάνουμε Shift +Enter, όπου συναντάμε κενή γραμμή κατά την αντιγραφή.

 

<<DiscreteMath`Combinatorica`

 

Hellman[m_Integer,e_List]:=Module[{a,b,i,j},a={};

For[i=1,i<=Length[e],a=Join[a,KSubsets[e,i]];i++];b={};

For[j=1,j<=Length[a],

If[Apply[Plus,Part[a,j]]==m,

AppendTo[b,Part[a,j]]];j++];b]

 

Hellman[515,{14,28,56,82,90,132,197,284,341,455}]

 

e = {3, 8, 14, 29, 56, 122, 243, 501}

 

Κωδικοποίηση[μήνυμα_String,e_List,w_Integer,v_Integer]:=

Flatten[Map[IntegerDigits[ToCharacterCode[#],2,8]&,

Characters[μήνυμα]],1].Mod[w*e,v]

 

Co=Κωδικοποίηση["Θεός", e, 229, 1151]

 

Αποκωδικοποίηση[Κώδικας_List,e_List,w_Integer,v_Integer]:=

Module[{a=Κώδικας,b,p,i,j},b={};

p=Table[e.IntegerDigits[k,2,8],{k,1,255}];

For[i=1,i<=Length[a],For[j=1,j<=255,

If[Part[p,j]==Mod[Part[a,i]*PowerMod[w,-1,v],v],

AppendTo[b,FromCharacterCode[j]]];j++];i++];

Apply[StringJoin,b]]

 

 

Αποκωδικοποίηση[Co, e, 229, 1151]

 

sideBar



You are here: ΠΑΝΕΠΙΣΤΗΜΙΟ Μαθηματικά και Προγραμματισμός