Autor Beitrag
Fiete
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 601
Erhaltene Danke: 339

W7
Delphi 6 pro
BeitragVerfasst: Fr 05.01.18 18:21 
Moin,
wünsche allen Programmierern ein produktives 2018.

Das Programm ist ein Nachtrag zum Adventskalender,
beim Alphabet sind die einzelnen Buchstaben beginnend mit der Null durchnummeriert.
m bezeichnet die Anzahl der Zeichen des Alphabets.
Mein Alfa=ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜabcdefghijklmnopqrstuvwxyzäöüß 0123456789,.-_:;#+*<>^?=)(/&%$§"!°|~\{}´' wobei m=101

Der geheime Schlüssel ist ein Zahlenpaar (a,b)wobei a,b Zahlen von 0 bis m-1 sind.
Zusätzlich muss gelten ggt(a,m)=1.

Wenn als Zahlenpaar "normal" gewählt wird, können
a, b und m gewählt werden und das Alphabet wird nicht
verwürfelt, bei "zufällig" wird das Zahlenpaar aus einer
Geheimzahl generiert, die Sender und Empfänger kennen.
Die 101 Zeichen des Alphabets werden zufällig verwürfelt.
Screen
Ist x das zu verschlüsselnde Zeichen, dann berechnet sich das zugehörige Zeichen
y des Geheimtexts nach der Formel
y = (a*x+b)mod m
Zur Entschlüsselung berechnet man das multiplikativ inverse Element

x =[a^{-1}*(y - b)] mod m
de.wikipedia.org/wiki/Affine_Chiffre

a ist für die multiplikative Chiffrierung zuständig, b für die anschließende Verschiebung
Viel Spaß beim Testen.
Gruß Fiete
Einloggen, um Attachments anzusehen!
_________________
Fietes Gesetz: use your brain (THINK)

Für diesen Beitrag haben gedankt: Mathematiker, Narses, Symbroson
Symbroson
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 382
Erhaltene Danke: 67

Raspbian, Ubuntu, Win10
C, C++, Python, JavaScript, Lazarus, Delphi7, Casio Basic
BeitragVerfasst: Fr 05.01.18 18:47 
Ich hatte sowas ähnliches als app gemacht

hardcode: (wie ich es Anfangs gelöst hatte)
ausblenden JavaScript-Quelltext
1:
2:
3:
4:
5:
6:
7:
dec = {'A':'Z''B':'I''C':'R''D':'A''E':'J''F':'S''G':'B''H':'K''I':'T''J':'C''K':'L''L':'U''M':'D''N':'M''O':'V''P':'E''Q':'N''R':'W''S':'F''T':'O''U':'X''V':'G''W':'P''X':'Y''Y':'H''Z':'Q',
            'a':'z''b':'i''c':'r''d':'a''e':'j''f':'s''g':'b''h':'k''i':'t''j':'c''k':'l''l':'u''m':'d''n':'m''o':'v''p':'e''q':'n''r':'w''s':'f''t':'o''u':'x''v':'g''w':'p''x':'y''y':'h''z':'q'}
enc = {'A':'D''B':'G''C':'J''D':'M''E':'P''F':'S''G':'V''H':'Y''I':'B''J':'E''K':'H''L':'K''M':'N''N':'Q''O':'T''P':'W''Q':'Z''R':'C''S':'F''T':'I''U':'L''V':'O''W':'R''X':'U''Y':'X''Z':'A',
            'a':'d''b':'g''c':'j''d':'m''e':'p''f':'s''g':'v''h':'y''i':'b''j':'e''k':'h''l':'k''m':'n''n':'q''o':'t''p':'w''q':'z''r':'c''s':'f''t':'i''u':'l''v':'o''w':'r''x':'u''y':'x''z':'a'};

function encrypt( s ) { return s.replace(/[a-zA-Z]/gfunction(c, i, s) { return dec[c] || c; } ); }
function decrypt( s ) { return s.replace(/[a-zA-Z]/gfunction(c, i, s) { return enc[c] || c; } ); }

Oder explizit: (wobei hier nicht die Zeichen abgefangen werden, die nicht im Alphabet vorkommen)
ausblenden JavaScript-Quelltext
1:
2:
3:
4:
5:
6:
7:
function decrypt(s) {
  s.replace(/./gfunction(c) {
    c = c.charCodeAt(0);
    if(c < 91return String.fromCharCode(((c-65)*9+25)%26+65);
    else return String.fromCharCode(((c-97)*9+25)%26+97);
  });
}


aber deine Lösung ist natürlich viel wissenschaftlicher ^^

_________________
most good programmers do programming not because they expect to get paid or get adulation by the public, but because it's fun to program. (Linus Torvalds)
Fiete Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 601
Erhaltene Danke: 339

W7
Delphi 6 pro
BeitragVerfasst: Fr 05.01.18 19:12 
Moin Symbroson,
versuch mal die anderen Codedateien zu knacken!

Gruß Fiete

_________________
Fietes Gesetz: use your brain (THINK)