Evgenios1 Δημοσ. 10 Απριλίου 2009 Δημοσ. 10 Απριλίου 2009 Μπηκα στο πειρασμο να φτιαξω κα εγω ενα προγραμμα κρυπτογραφησης . Για να πω την αληθεια δε περιμενα βγει τοσο καλο. Φυσικα ακομα το δουλευω .. αλλα να μια γευση >keimeno pros kryptografish: hello world ------------------------------------------ Keimeno ASCII hello world ------------------------------------------ keimeno se morfi Bytes 104-101-108-108-111-32-119-111-114-108-100- ------------------------------------------ Kryptografimeno keimeno se morfi keimenoy ASCII: t?kR??cK?}?s?|ncOm?q??*↓kG?N??(c???F`?&^lGm{ ------------------------------------------ Kryptografimeno keimeno se morfi bytes: 116-152-107-82-173-164-99-75-188-125-168-115-180-124-110-99-79-109-239-113-188-1 95-42-25-107-71-187-78-211-223-40-99-234-178-244-70-96-204-38-94-108-71-109-123- ------------------------------End------------------------- keimeno pros kryptografish: hello world ------------------------------------------ Keimeno ASCII hello world ------------------------------------------ keimeno se morfi Bytes 104-101-108-108-111-32-119-111-114-108-100- ------------------------------------------ Kryptografimeno keimeno se morfi keimenoy ASCII: d??]???{∟??O??eb_l?^?s?▬??rM☼??z"??wdo?|??em ------------------------------------------ Kryptografimeno keimeno se morfi bytes: 100-184-169-93-185-150-166-123-28-206-235-79-140-239-101-98-95-108-167-94-192-11 5-224-22-243-148-114-77-15-173-237-122-34-210-187-119-100-111-233-124-172-199-10 1-109-------------------------------End------------------------- keimeno pros kryptografish: hello world ------------------------------------------ Keimeno ASCII hello world ------------------------------------------ keimeno se morfi Bytes 104-101-108-108-111-32-119-111-114-108-100- ------------------------------------------ Kryptografimeno keimeno se morfi keimenoy ASCII: ?;?yi4?\???yd??V?`K?↕?9??⌂???y&s?U?N?t∟??l ------------------------------------------ Kryptografimeno keimeno se morfi bytes: 128-59-231-121-105-52-235-92-172-158-235-121-100-63-231-86-7-159-96-75-200-18-16 4-57-7-215-249-127-147-206-172-121-38-115-188-85-164-78-170-116-28-149-170-108-- -----------------------------End------------------------- keimeno pros kryptografish:
Evgenios1 Δημοσ. 10 Απριλίου 2009 Δημοσ. 10 Απριλίου 2009 εδω ενα screenshot και εχω ανεβαση το προγραμμα cryp1.zip
Evgenios1 Δημοσ. 11 Απριλίου 2009 Δημοσ. 11 Απριλίου 2009 Πως δουλευει το παραπανω προγραμμα? Λοιπον, ψαχνοντας στο ιντερνετ δε βρηκα κατι το οποιο να μου κανει, και αυτο γιατι ολλα τα παραδειγματα (στα οποια επεσα) ειχανε περιορισμο στο byte δλδ κεσαρα , αλα charset κλπ. Η μεθοδος να παρεις ενα byte και να το πας 5 θεσεις μπροστα κλπ , κατα την γνομη μου ειναι αχριστη (αν κρυπτογραφησεις το "1111111" και σου βγει "8888888" καταλαβενεις τι παιζει). Στο δικο μου προγραμμα (αν το εχει τρεξει καποιος) θα δει πως, εαν κρυπτογραφησει το (πχ) "hello" 10 φορες, και στοις 10 φορες θα του βγαλει διαφορετικο αποτελεσμα >hello ------------------------------------------ T?hN ?+q?↔lg?nn_s?bc ------------------------------------------ hello ------------------------------------------ ►?.y1?#P?∟?|<∟?u{☼?F ------------------------------------------ hello ------------------------------------------ ???S??g?*@h??Gs?mV ------------------------------------------ hello ------------------------------------------ (?-w???o ??zX??o←?`K ------------------------------------------ hello ------------------------------------------ ???D↔??^?m?g???Ck??] ------------------------------------------ hello ------------------------------------------ ??!|?¶?k ??V(??D???] ------------------------------------------ hello ------------------------------------------ 4? S5?,G ?"z?↔mc?<?_ ------------------------------------------ hello ------------------------------------------ ???E???k?~?~???P?m%V ------------------------------------------ hello ------------------------------------------ ??e`e4nk$??y??dt?<bV ------------------------------------------ hello ------------------------------------------ ?U[??fk@L?n_? ------------------------------------------ hello ------------------------------------------ ???F?▬-y?|?U?Lc\G??P ------------------------------------------ Γιατι γινετε αυτο? Γιατι περνω ενα byte και το σκορμαω σε 4 byte τα οποια ειναι random. Δηλαδη, εστω οτι εχουμε το 'A' (65) byte το οποιο ειναι ετσι > 0 1 0 0 0 0 0 1 Εχω μια βαση (η οποια ειναι τυχεα) 4 byte πχ (0χ) 2,55,33,250 > byte:2 Bits:00000010 byte:55 Bits:00110111 byte:33 Bits:00100001 byte:250 Bits:11111010 Αναλογα το κλειδι (τωρα το δουλευω , και ειναι defualt "01234567") βαζω 1 ζευγος bit σε καθε Byte > * Random byte | bit(for dec) | key | result byte * 00000010 | 0 1 | 0 1 | 00 00 00 10 * 00110111 | 0 0 | 2 3 | 00 11 00 11 * 00100001 | 0 0 | 4 5 | 00 00 00 01 * 11111010 | 0 1 | 6 7 | 10 11 10 10 Το αποτελεσμα ειναι > * 000000[color="Red"]10[/color] 0011[color="red"]00[/color]11 00[color="red"]00[/color]0001 [color="red"]10[/color]111010 * key:01 key:23 key:45 key:67 * bits:01 bits:00 bits:00 bits:01 Αυτη ειναι η λογικη μου ! ειναι σε c# .net 2 > using System.IO; using System.Text; using System; using System.Collections; namespace Cryptography { public class Crypt { private Random ran; public Crypt() { Iniz(); } public Stream EncryptText(string text, Key key) { byte[] textBuffer = Encoding.ASCII.GetBytes(text); MemoryStream encryptedText = new MemoryStream(); long step = 0; for (int i = 0; i < textBuffer.Length; i++) { encryptedText.Seek(step, SeekOrigin.Begin); encryptedText.Write(Enc(textBuffer[i], key), 0, 4); step += 4; } return encryptedText; } public string DecryptText(Stream stream, Key key) { byte[] bigBuffer = new byte[stream.Length / 4]; long step = 0; for (int i = 0; i < stream.Length / 4; i++, step += 4) { stream.Seek(step, SeekOrigin.Begin); byte[] buffer = new byte[4]; stream.Read(buffer, 0, 4); bigBuffer[i] = Dec(buffer, key); } return Encoding.ASCII.GetString(bigBuffer); } #region private methods private byte[] Enc(byte b, Key key) { byte[] temp = GetRandom4(); temp[0] = SetBit(temp[0], GetBit(b, 0), key.key1); temp[0] = SetBit(temp[0], GetBit(b, 1), key.key2); temp[1] = SetBit(temp[1], GetBit(b, 2), key.key3); temp[1] = SetBit(temp[1], GetBit(b, 3), key.key4); temp[2] = SetBit(temp[2], GetBit(b, 4), key.key5); temp[2] = SetBit(temp[2], GetBit(b, 5), key.key6); temp[3] = SetBit(temp[3], GetBit(b, 6), key.key7); temp[3] = SetBit(temp[3], GetBit(b, 7), key.key8); return temp; } private byte Dec(byte[] bs, Key key) { byte temp = 0x0; temp = SetBit(temp, GetBit(bs[0], key.key1), 0); temp = SetBit(temp, GetBit(bs[0], key.key2), 1); temp = SetBit(temp, GetBit(bs[1], key.key3), 2); temp = SetBit(temp, GetBit(bs[1], key.key4), 3); temp = SetBit(temp, GetBit(bs[2], key.key5), 4); temp = SetBit(temp, GetBit(bs[2], key.key6), 5); temp = SetBit(temp, GetBit(bs[3], key.key7), 6); temp = SetBit(temp, GetBit(bs[3], key.key8), 7); return temp; } private void Iniz() { ran = new Random(); } #region bit stuffs private byte SetBit(byte b, bool bit, int index) { BitArray temp = new BitArray(8); for (int i = 0; i < 8; i++) temp.Set(i, GetBit(b, i)); temp.Set(index, bit); byte result = 0; for (byte y = 0; y < 8; y++) if (temp.Get(y)) result |= (byte)(1 << y); return result; } private bool GetBit(byte b, int index) { bool[] temp = new bool[8]; int i = 7; int bitIndex = 128; for (; bitIndex > 0; bitIndex /= 2, i--) temp[i] = ((b & bitIndex) == 0x00) ? false : true; return temp[index]; } #endregion private byte[] GetRandom4() { return new byte[] { (byte)ran.Next(0,255), (byte)ran.Next(0,255), (byte)ran.Next(0,255), (byte)ran.Next(0,255), }; } #endregion } } > namespace Cryptography { public class Key { public int key1 { get; set; } public int key2 { get; set; } public int key3 { get; set; } public int key4 { get; set; } public int key5 { get; set; } public int key6 { get; set; } public int key7 { get; set; } public int key8 { get; set; } public static Key CreateDefualtKey() { return new Key { key1 = 0, key2 = 1, key3 = 2, key4 = 3, key5 = 4, key6 = 5, key7 = 6, key8 = 7 }; } } }
chiossif Δημοσ. 11 Απριλίου 2009 Δημοσ. 11 Απριλίου 2009 Χαίρομαι που αυτό το θέμα ξυπνάει που και που... Διάβασα πρόσφατα το βιβλίο "Κώδικες και μυστικά" του Simon Singh (έχει προταθεί και αλλού) και το συνιστώ για μια εκλαϊκευμένη προσέγγιση στην κρυπτογράφηση. Κάλυψε ιδανικά την δίψα μου για αλγόριθμους-ασκήσεις τους οποίους φτιάχνω σε ANSI C για ξεσκούριασμα. Καλό κώδικα... και χωρίς μυστικά
Viktwras Δημοσ. 4 Μαΐου 2009 Δημοσ. 4 Μαΐου 2009 Καλησπέρα παιδιά, Μήπως μπορείτε να κάνετε και μια αναφορά σε αλγόριθμο κρυπτογράφησης El Gamal ? Αν έχει κάποιος, κάποιο source code θα ενδιαφερόμουν να του ρίξω μια ματιά! Έχω διαβάσει ότι είναι κάτι παρόμοιο με Diffie-Hellman, αλλά πιό ασφαλές! Γνωρίζεται κάτι περισσότερο? Μπορείτε να μου προτείνετε κάποιο site από το οποίο να μπορώ να έχω σωστή ενημέρωση για τον συγκεκριμένο αλγόριθμο?
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.