| Programmieraufgaben Hier wird regelmäßig eine neue Programmieraufgabe gestellt, die dann gelöst werden soll und in Zusammenarbeit mit den Moderatoren auch besprochen werden kann. |
Diskussion: kleines Verschlüsselungsprogramm im Forum Programmieraufgaben, in der Kategorie Code Kitchen; So, das ganz mal in Assembler. Der Code ist ein bisschen unschön, aber ich fang erst an Assembler zu lernen. ...
![]() |
| | #46 (permalink) |
| Registriert seit: 31.03.08 ![]() Likes: 0 | So, das ganz mal in Assembler. Der Code ist ein bisschen unschön, aber ich fang erst an Assembler zu lernen. Eingegeben werden dürfen nur Buchstaben (keine Leerzeichen). Die Buchstaben werden danach in Kleinbuchstaben umgewandelt und dann einzeln verschlüsselt. Compiled wird das ganze mit: Code: nasm -fwin32 -o caesar.obj caesar.asm golink /console /entry _main /fo caesar.exe caesar.obj msvcrt.dll kernel32.dll Code: %include 'C:\Program Files\nasmx\inc\nasmx.inc'
%include 'C:\Program Files\nasmx\inc\win32\windows.inc'
%include 'C:\Program Files\nasmx\inc\win32\user32.inc'
%include 'C:\Program Files\nasmx\inc\win32\kernel32.inc'
extern printf
extern scanf
extern system
entry caesar
[section .text]
proc caesar
invoke printf, "Enter a String to encrypt: "
invoke scanf, "%s", input
invoke printf, "Enter a number to shift: "
invoke scanf, "%d", input2
;making lowercase
mov ecx, 0
.loopl:
mov al, byte [input + ecx]
cmp al, 0
jz .extl
;Only letters?
cmp al, 0x41
jb .error
cmp al, 0x7A
ja .error
cmp al, 0x5A
jb .tstext
cmp al, 0x61
jb .error
;to lower
.tstext:
cmp al, 0x61
jge .nothChange
add al, 0x20
mov byte [input + ecx], al
.nothChange:
inc ecx
jmp .loopl
.extl:
;encrypting
mov ecx, 0
.loope:
mov al, byte [input + ecx]
cmp al, 0
jz .ext
add al, byte [input2]
.tst:
cmp al, 0x7A
ja .cora
cmp al, 0x61
jb .corb
mov byte [input + ecx], al
inc ecx
jmp .loope
.ext:
invoke printf, "Encrypted: %s", input
invoke system, "PAUSE>nul"
.extProc:
invoke ExitProcess, 0
ret
.cora:
sub al, 0x19
jmp .tst
.corb:
add al, 0x19
jmp .tst
.error:
invoke printf, "Error: Only letters are allowd"
jmp .extProc
endproc
[section .bss]
input resb 256
input2 resb 16 |
| | |
| | #47 (permalink) |
| Senior Member Registriert seit: 13.07.08 ![]() ![]() ![]() Likes: 60 | Naja jetzt wo du den Thread schon aus der Pensionierung getrieben hast: http://28398.org/2009/11/mini-progra...essum-erganzt/
__________________ "It is the human race! The deterioration of the spirit of man. Man undermining himself, causing a self-willed, self-imposed, self-evident self-destruction."+++ BREAKING +++ Troll ertrinkt im Planschbecken +++ |
| | |
| | #48 (permalink) |
| Moderator ![]() Registriert seit: 11.02.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 195 | Da ich mich gerade (mal wieder) etwas näher mit Kryptographie beschäftige & die beiden Chiffren echte Klassiker der Kryptographie bilden, so wie das allseits beliebte HelloWorld für die Programmierung, habe ich eine kleine Java-Anwendung dazu geschrieben. Für eine GUI war ich zu faul & das Programm arbeitet auch ausschließlich mit Textdateien die im selben Ordner liegen... Java-Code Geändert von Tarantoga (26.11.10 um 16:18 Uhr) |
| | |
| | #49 (permalink) |
| Registriert seit: 03.03.10 ![]() Likes: 0 | So hier mal meine etwas ausführlichere Version in C++. Unterstützt bisher jedoch nur die Ceasar-Verschlüsselung und Ceasar-Entschlüsselung. Man kann entweder einen Text von Hand eingeben, oder eine Datei angeben. Den ver- oder entschlüsselten Text, kann man sich zusätzlich zur Anzeige im Konsolenfenster, wenn man will in eine Datei schreiben lassen. Weitere Verschlüsselungen folgen, diese sind ja jetzt leicht einzufügen. Gruß freeG EDIT: Sooo nun hab ich auch die Vigenere-Verschlüsselung eingebaut. Man kann jetzt also mit der Caesar- oder Vigenere-Verschlüsselung, eingegebene Texte, oder Dateien ver- und entschlüsseln. Hier das neue Archiv. Gruß freeG Geändert von fr33g (18.05.10 um 19:40 Uhr) |
| | |
| | #50 (permalink) |
| Registriert seit: 02.09.10 ![]() Likes: 0 | Zwar schon alt der Thread hier, aber ich hab trotzdem was in Java gebastelt. Es kann Vinegre, Cäsar hab ich ignoriert, da das "zu unsicher" ist ;-) Auf Wunsch kann es einen zufälligen Schlüssel generieren. Sollte ein eignegebenr Schlüssel zu kurz sein (kürzer als 3 Zeichen) wird ebenfalls automatisch ein neuer generiert. Es ist möglich, (lesbare also txt oder sowas) Dateien zu verschlüsseln, oder einfach einen eingebenen Text. Auch Ausgabe in Dateien ist möglich. Oder eine wilde Kombination aus beidem ;-) Wird eine Datei verschklüsselt gespeichert, wird der Schlüssel am Schluss angehängt, da ich keine Lust hatte, den ewig zu suchen, falls ich mal Mist baue ;-). Die Codierte Ausgabe kann auf Wunsch in Großbuchstaben und/oder in 4er Gruppen formatiert werden, oder im ursprünglichem Zustand wiedergegeben werden. Das ganze schön in eine Gui verpackt. -- nur Fehlermeldungen landen der Faulheit halber auf der Konsole. Da es mehrere Dateien sind (wie eigentlich meißt in Java) hab ich die Quelldateien angehängt. Hier die RunnableJar. Geändert von DarkMozart (03.09.10 um 00:11 Uhr) |
| | |
| | #51 (permalink) |
| Registriert seit: 10.11.10 ![]() Likes: 0 | Und hier noch ne Lösung in VB. Habe allerdings die beiden Verschlüsselungen in zwei separate Konsolenanwendungen geschrieben. Groß- oder Kleinschreibung wird hierbei nicht beachtet. Nicht-alphabetische Zeichen (alles, was nicht im Array ist) führen noch zum Absturz - mal gucken, wann/ob ich das noch ändere. Caesar VB Vigenère VB Geändert von DMRMcK (30.11.10 um 16:25 Uhr) |
| | |
| | #52 (permalink) |
| Registriert seit: 09.07.11 ![]() Likes: 2 | Hier ist meine C++ Version: (nur Ceaser-Schlüssel, kann man aber selbst angeben) Code: #include <iostream>
#include <fstream>
#include <conio.h>
#include <string>
using namespace std;
int getcode();
int setcode();
int main()
{
char eingabe;
cout << "kleines Verschluesselungsprogramm" << endl;
while(true)
{
cout << "Option: " << endl;
cout << "Datei (v)erschluesseln" << endl;
cout << "Datei (e)ntschluesseln" << endl;
cout << "(B)eenden" << endl << endl;
cin >> eingabe;
switch(eingabe)
{
case 'v':
case 'V':
setcode();
break;
case 'e':
case 'E':
getcode();
break;
case 'b':
case 'B':
cout << "Programm wird beendet" << endl;
cout << "Druecken Sie eine Taste um das Fenster zu schliessen" << endl;
getch();
return 0;
break;
default:
cout << "Falsche Eingabe!" << endl;
break;
}
}
}
int getcode()
{
char zeichen;
string quelldatei, zieldatei;
int key;
ifstream dat_ein;
ofstream dat_aus;
cout << "Welche Datei moechten Sie entschluesseln: ";
cin >> quelldatei;
cout << "In welche Datei soll geschrieben werden: ";
cin >> zieldatei;
dat_ein.open(quelldatei.c_str(), ios_base::in);
dat_aus.open(zieldatei.c_str(), ios_base::out);
if(!dat_ein)
{
cerr << "Quelldatei konnte nich geoeffnet werden!" << endl;
return -1;
}
if(!dat_aus)
{
cerr << "Zieldatei konnte nich geoeffnet werden!" << endl;
return -1;
}
cout << "Bitte geben Sie den Schluessel (Zahl) an: ";
cin >> key;
while(!dat_ein.eof())
{
dat_ein.get(zeichen);
zeichen = zeichen - key;
dat_aus << zeichen;
}
dat_ein.close();
dat_aus.close();
cout << "erledigt!" << endl;
return 1;
}
int setcode()
{
char zeichen;
string quelldatei, zieldatei;
int key;
ifstream dat_ein;
ofstream dat_aus;
cout << "Welche Datei moechten Sie verschluesseln: ";
cin >> quelldatei;
cout << "In welche Datei soll geschrieben werden: ";
cin >> zieldatei;
dat_ein.open(quelldatei.c_str(), ios_base::in);
dat_aus.open(zieldatei.c_str(), ios_base::out);
if(!dat_ein)
{
cerr << "Quelldatei konnte nich geoeffnet werden!" << endl;
return -1;
}
if(!dat_aus)
{
cerr << "Zieldatei konnte nich geoeffnet werden!" << endl;
return -1;
}
cout << "Bitte geben Sie den Schluessel (Zahl) an: ";
cin >> key;
while(!dat_ein.eof())
{
dat_ein.get(zeichen);
zeichen = zeichen + key;
dat_aus << zeichen;
}
dat_ein.close();
dat_aus.close();
cout << "erledigt!" << endl;
return 1;
} |
| | |
| | #53 (permalink) |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() Likes: 156 | RC4 in 26 Python-Zeilen. 1:1 aus Wikipedia umgesetzt und kann Dateien ver/entschlüsseleln. Muss also nicht immer Caeser oder Vigenère sein Py
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. |
| | |
![]() |
| | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Neues Verschlüsselungsprogramm (selbst gecodet) | Tec | Cryptography & Encryption | 101 | 20.07.07 11:37 |
| Verschlüsselungsprogramm | Until-Death | Code Kitchen | 5 | 01.07.07 13:34 |
| Verschlüsselungsprogramm | antcool | Cryptography & Encryption | 14 | 21.10.05 16:31 |
| Bestes Verschlüsselungsprogramm | spyro133 | Cryptography & Encryption | 2 | 20.06.05 08:09 |
| Verschlüsselungsprogramm | Avenger | Cryptography & Encryption | 5 | 22.11.04 21:59 |