Τα πάντα για την C

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: Τα πάντα για την C

Δημοσίευσηαπό migf1 » 13 Φεβ 2012, 16:40

Star_Light έγραψε:
...
Αν και ουτως η άλλως ο Καίσαρας ειναι μάλλον μια αστεία κρυπτογραφηση :lol: :lol: :lol:

Ο στόχος δεν είναι η κρυπτογράφηση στον Καίσαρα, αλλά να γράψεις το 1ο σου ολοκληρωμένο πρόγραμμα σε C ;)

έγραψε:
στον Vigenere η ασφάλεια εξαρτάται απο το μήκος του κλειδιού. Παρολαυτα δεν ξερω κατα ποσο ειναι εφικτό
σε τέτοιους απλους κρυπταλγορίθμους να σπάσει κάποιος την ασφάλεια έχοντας ένα πινακάκι με την συχνότητα
των γραμμάτων στο αλφάβητο .

Κι εγώ δεν το ξέρω αυτό. Δεν ξέρω επίσης αν το ανακάτεμα του αρχικού αλφάβητου αν και κατά πόσο δυσκολεύει τους attackers (και βαριέμαι κιόλας να το ψάξω για να είμαι ειλικρινής... νομίζω πως κάτι μπορεί να συνεισφέρει πάντως).
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό Star_Light » 13 Φεβ 2012, 17:59

Θα κοιτάξω να βάλω αλφάβητο στον κώδικα ή σημερα ή αυριο. Τωρα για τα αλλα που λές μπορουν να μπουν και αυτα
και το προγραμμα γινει πιο ισχυρό θα το κοιταξω μετα την προσθηκη χαρακτηρων.
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό migf1 » 13 Φεβ 2012, 18:52

Star_Light έγραψε:Θα κοιτάξω να βάλω αλφάβητο στον κώδικα ή σημερα ή αυριο...

Το αλφάβητο πρέπει να το κάνεις c-string, αντί για πίνακα ακεραίων που το έχεις τώρα ;)
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό Star_Light » 13 Φεβ 2012, 22:30

Κώδικας: Επιλογή όλων
void Display_reverse(char str[N])
{
char *sp; // string pointer

for(sp = str; *sp!='\0' && *sp!='\n'; sp++)

putchar(*sp);
return;


btw ηθελα να επισημάνω οτι η έκφραση "ο sp δείχνει στον str" ειναι λάθος ετσι δεν ειναι? Ο sp απλα δειχνει οπου και ο str
αλλιως θα ηταν διπλός δείκτης στον str "δεικτη" .

Απλα ξανακοιτάω τα strings λιγο πριν την μεγαλη μάχη.

P.S Εδω ο str[N] ειναι περιττός απο την άποψη πως θα μπορούσα εξαρχης να χρησιμοποιήσω το ονομα του πίνακα σαν δείκτη σε char και να το χειριστω ετσι μεσα στην συνάρτηση πχ ->

Κώδικας: Επιλογή όλων
#include<stdio.h>
#define SIZE 30
void func( char *message);

int main()
{
char message[SIZE]="";

printf(" Give a string: ");

fgets(message, SIZE , stdin);

func(message);

return 0;
}
void func( char *message)
{
while(*message!='\0')
{
putchar(*message);
message++;
}

return;
}
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό stamatiou » 13 Φεβ 2012, 23:03

Εγώ μέσα στη βδομάδα θα αρχίσω λογικά και τη συνάρτηση αποκρυπτογράφησης. Ο κώδικάς μου μέχρι τώρα:
http://ideone.com/yzCwf
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό Star_Light » 14 Φεβ 2012, 00:01

stamatiou έγραψε:Εγώ μέσα στη βδομάδα θα αρχίσω λογικά και τη συνάρτηση αποκρυπτογράφησης. Ο κώδικάς μου μέχρι τώρα:
http://ideone.com/yzCwf


Το stdlib.h δεν το χρειάζεσαι μιας και δεν χρησιμοποιείς κάποια
συνάρτηση που να το χρειάζεται. Το return 0 που επιστρέφει η συνάρτηση τι ειναι?
κάντην void αν ειναι .
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό Star_Light » 14 Φεβ 2012, 03:07

@stamatiou

η παρακάτω συνάρτηση υλοποιεί πάντως αυτο που θες να κάνεις (την απλή μετατόπιση χωρις modulo) εξίσου και με δείκτες :

Κώδικας: Επιλογή όλων

void func( char *message)
{
int key;
printf(" Give the key : ");
scanf("%d" , &key);

while(*message!='\0')
{
*message= (*message + key);

putchar(*message);
message++;
}
return;
}
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό Star_Light » 14 Φεβ 2012, 04:09

Ολοκληρωμένος ο παραπάνω (Oχι ο Καίσαρας αυτος του σταματίου)

http://ideone.com/VkTsr

Κώδικας: Επιλογή όλων


kostas@kostas-SSL:~/PROGRAMS$ ./dokimes
Give a string: HELLO MY FRIEND HOW ARE YOU TODAY
Give the range of the key : 5
the key is : 5

MJQQT%R^%KWNJSI%MT\%FWJ%^TZ%YTIF^ * The plaintext is * : HELLO MY FRIEND HOW ARE YOU TODAY
ckostas@kostas-SSL:~/PROGRAMS$

Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό migf1 » 14 Φεβ 2012, 11:59

Star_Light έγραψε:
Spoiler: show
Κώδικας: Επιλογή όλων
void Display_reverse(char str[N])
{
char *sp; // string pointer

for(sp = str; *sp!='\0' && *sp!='\n'; sp++)

putchar(*sp);
return;


btw ηθελα να επισημάνω οτι η έκφραση "ο sp δείχνει στον str" ειναι λάθος ετσι δεν ειναι? Ο sp απλα δειχνει οπου και ο str
αλλιως θα ηταν διπλός δείκτης στον str "δεικτη".

Σωστά :)
Για αυτό σε αυτές τις περιπτώσεις, την τοπική μεταβλητή την ονομάζουμε cp (αντί για sp) διότι είναι character-pointer (και όχι string-pointer).

έγραψε:Απλα ξανακοιτάω τα strings λιγο πριν την μεγαλη μάχη.

P.S Εδω ο str[N] ειναι περιττός απο την άποψη πως θα μπορούσα εξαρχης να χρησιμοποιήσω το ονομα του πίνακα σαν δείκτη σε char και να το χειριστω ετσι μεσα στην συνάρτηση πχ ->

Spoiler: show
Κώδικας: Επιλογή όλων
#include<stdio.h>
#define SIZE 30
void func( char *message);

int main()
{
char message[SIZE]="";

printf(" Give a string: ");

fgets(message, SIZE , stdin);

func(message);

return 0;
}
void func( char *message)
{
while(*message!='\0')
{
putchar(*message);
message++;
}

return;
}

Επίσης σωστά :)

Απλώς όταν αρχικοποιείς τον message στην main() βάζε τον = {'\0'} (αντί για = ""). Το έχω λάθος στο site μου, υπό την έννοια πως το ={'\0'} μηδενίζει εγγυημένα όλες τις θέσεις του string, ενώ το ="" μηδενίζει εγγυημένα μονάχα την 1η θέση (για τις υπόλοιπες είναι compiler dependent).
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό migf1 » 14 Φεβ 2012, 12:14

stamatiou έγραψε:Εγώ μέσα στη βδομάδα θα αρχίσω λογικά και τη συνάρτηση αποκρυπτογράφησης. Ο κώδικάς μου μέχρι τώρα:
http://ideone.com/yzCwf

Πριν ξεκινήσεις την αποκρυπτογράφηση, δοκίμασε την κρυπτογράφηση του κώδικά σου με...

α) Enter text to encrypt: hello there

β) Enter text to encrypt: (οτιδήποτε)
Enter key: 35000

γ) Enter text to encrypt: (οτιδήποτε)
Enter key: -3000
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

ΠροηγούμενηΕπόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι