<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Γενικά Θέματα VS.NET</title><link>https://www.dotnetzone.gr:443/cs/forums/81/ShowForum.aspx</link><description>Γενική συζήτηση για το Visual Studio IDE, καθώς και ανταλλαγή tips και tricks για καθημερινή χρήση</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: "Μπακάλικη" κρυπτογράφηση strings σε 12 γραμμές κώδικα</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70976.aspx</link><pubDate>Wed, 25 Jul 2012 23:40:26 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70976</guid><dc:creator>ioagia</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70976.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=81&amp;PostID=70976</wfw:commentRss><description>&lt;strong style="font-family:Tahoma, Arial, Helvetica;"&gt;Παναγιώτη&lt;/strong&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;ο κώδικας της κρυπτογράφησης τρέχει μια χαρά.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Αν καταλαβαίνω σωστά αναφέρεται σε 64bit κρυπτογράφηση.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Γνωρίζεις αν υπάρχει τρόπος να μετατραπεί σε 128bit κρυπτογράφηση ?&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Αν όχι, υπάρχει κάποια αξιόπιστη πηγή που θα μπορούσες να με παραπέμψεις?&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Ευχαριστώ προκαταβολικά.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;</description></item><item><title>Απ: "Μπακάλικη" κρυπτογράφηση strings σε 12 γραμμές κώδικα</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/15360.aspx</link><pubDate>Tue, 01 Aug 2006 18:00:16 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:15360</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/15360.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=81&amp;PostID=15360</wfw:commentRss><description>Το θέμα στο οποίο αναφέρεσαι θέλει πολύ συζήτηση και δεν είναι και αυτό στο οποίο αναφέρονται ο DrMad και ο agmarios. Το ζητούμενο είναι πως μπορεί κανείς με απλές κλήσεις να έχει καλό encryption χωρίς να γράψει το δικό του από την αρχή. Από που θα έρθει τώρα το string? Από το χρήστη, από το registry, από το Isolated Storage, δεν έχει σημασία. Σημασία έχει ότι το .NET σου επιτρέπει με λίγες γραμμές κώδικα να έχεις αρκετά καλό encryption.&lt;br /&gt;
&lt;br /&gt;
Αν κάποιος θέλει να έχει όσο πιο ασφαλές encryption γίνεται δεν χρησιμοποιεί καν το password που δίνει ο χρήστης, αλλά το περνάει από hash function μερικές δεκάδες φορές. Επίσης, φροντίζει να μείνει κρυφό και το IV. Και για ακόμα μεγαλύτερη ασφάλεια, χρησιμοποιεί αλγόριθμους public key για να προστατέψει το κλειδί. Και επειδή δεν μπορείς να εμπιστευτείς το public key που σου δίνει ο άλλος, χρησιμοποιείς ένα public key management system, όπως τα certificate services των Windows για να εξασφαλίσεις την εγκυρότητα των κλειδιών. Επίσης, αντί να χρησιμοποιείς το String για την αποθήκευση του password στη μνήμη, χρησιμοποιείς το SecureString, το οποίο παραμένει κρυπτογραφημένο στη μνήμη και δεν γράφεται ποτέ στο page file, για να μην μπορεί ούτε ένας debugger να διαβάσει το string.&lt;br /&gt;
&lt;br /&gt;
Όλα αυτά όμως είναι overkill όταν το ζητούμενο είναι απλά μία συνάρτηση η οποία θα κρυπτογραφεί ένα string χρησιμοποιώντας ένα άλλο ως password.</description></item><item><title>Απ: "Μπακάλικη" κρυπτογράφηση strings σε 12 γραμμές κώδικα</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/15359.aspx</link><pubDate>Tue, 01 Aug 2006 17:32:46 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:15359</guid><dc:creator>Νατάσα Μανουσοπούλου</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/15359.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=81&amp;PostID=15359</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/mistblue/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;pkanavos wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;Ευτυχώς, έτσι και γράψεις μία φορά μια κλάση
όπως η Encryption64 δεν χρειάζεται να ασχοληθείς ξανά με τις
λεπτομέρειες υλοποίησης. Μπορείς έτσι με δύο γραμμές κώδικα, την
Encrypt και την Decrypt να έχεις όσο δυνατή κρυπτογράφηση
θέλεις.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;
&lt;br&gt;
Βέβαια παρουσιάζεται μετά μπροστά σου το επόμενο πρόβλημα: Πώς θα προστατέψεις το password από τον disassembler &lt;img src="/cs/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;br&gt;
Ακόμα και στον unmanaged κόσμο, ένα strings xxx.dll μπορεί να σου το εμφανίσει σε χρόνο μηδέν.&lt;br&gt;
Αν δε το ζητάς από το χρήστη και δεν είναι αποθηκευμένο σε κάποιο
secure store, καταλήγουμε στο πρόβλημα της κότας και του αυγού...&lt;br&gt;</description></item><item><title>Απ: "Μπακάλικη" κρυπτογράφηση strings σε 12 γραμμές κώδικα</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/15356.aspx</link><pubDate>Tue, 01 Aug 2006 05:20:27 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:15356</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/15356.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=81&amp;PostID=15356</wfw:commentRss><description>&lt;P&gt;Ο agmarios δεν έχει κι άδικο. Το .NET περιλαμβάνει έτοιμους αλγόριθμους όπως TripleDES και το στάνταρ AES (αν και το ονομάζει Rijndael). Επειδή όμως οι κλάσεις των αλγορίθμων είναι για γενική χρήση, η χρήση τους για string encryption είναι λίγο περίεργη. Από την άλλη, έτσι και γράψει κανείς μία φορά τις συναρτήσεις για encrypt/decrypt, μπορεί να τις χρησιμοποιήσει όπου θέλει. Πραγματικά, δεν υπάρχει λόγος να χρησιμοποιεί κανείς αδύναμους αλγόριθμους κρυπτογράφησης όταν μπορεί να χρησιμοποιήσει εύκολα δυνατούς και ασφαλείς αλγόριθμους.&lt;/P&gt;
&lt;P&gt;Μία εύκολη υλοποίηση είναι η κλάση Encryption64 που περιγράφεται στο&amp;nbsp;&lt;A href="http://www.devcity.net/Articles/47/1/encrypt_querystring.aspx"&gt;http://www.devcity.net/Articles/47/1/encrypt_querystring.aspx&lt;/A&gt; . Η κλάση αυτή χρησιμοποιεί τον αλγόριθμο DES για να κρυπτογραφήσει strings, ο οποίος όμως θεωρείται ανασφαλής. Αλλάζοντας απλά την κλάση DESCryptoServiceProvider με την RijndaelManaged, η κλάση μπορεί να χρησιμοποιήσει τον αλγόριθμο AES (Rijndael). Ο τροποποιημένος κώδικας είναι ο εξής:&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Imports&lt;/span&gt; System&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Imports&lt;/span&gt; System.IO&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Imports&lt;/span&gt; System.Xml&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Imports&lt;/span&gt; System.Text&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Imports&lt;/span&gt; System.Security.Cryptography&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Imports&lt;/span&gt; NUnit.Framework&lt;br /&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Public&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Class&lt;/span&gt; Encryption64&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Private&lt;/span&gt; key() &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Byte&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; {}&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Private&lt;/span&gt; IV() &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Byte&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; {&amp;amp;H12, &amp;amp;H34, &amp;amp;H56, &amp;amp;H78, &amp;amp;H90, &amp;amp;HAB, &amp;amp;HCD, &amp;amp;HEF, &amp;amp;H1A, &amp;amp;H2B, &amp;amp;H3C, &amp;amp;H4D, &amp;amp;H5E, &amp;amp;H6F, &amp;amp;H70, &amp;amp;HA1}&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Public&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Function&lt;/span&gt; Decrypt(&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ByVal&lt;/span&gt; stringToDecrypt &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;String&lt;/span&gt;, _&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ByVal&lt;/span&gt; sEncryptionKey &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;String&lt;/span&gt;) &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;String&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Dim&lt;/span&gt; inputByteArray(stringToDecrypt.Length) &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Byte&lt;/span&gt;&lt;br /&gt;        key &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; System.Text.Encoding.UTF8.GetBytes(&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Left&lt;/span&gt;(sEncryptionKey, 8))&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Dim&lt;/span&gt; crypto &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; RijndaelManaged()&lt;br /&gt;&lt;br /&gt;        inputByteArray &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; Convert.FromBase64String(stringToDecrypt)&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Dim&lt;/span&gt; ms &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; MemoryStream()&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Dim&lt;/span&gt; cs &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; CryptoStream(ms, crypto.CreateDecryptor(key, IV), _&lt;br /&gt;            CryptoStreamMode.&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Write&lt;/span&gt;)&lt;br /&gt;        cs.&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Write&lt;/span&gt;(inputByteArray, 0, inputByteArray.Length)&lt;br /&gt;        cs.FlushFinalBlock()&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Dim&lt;/span&gt; encoding &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; System.Text.Encoding &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; System.Text.Encoding.UTF8&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Return&lt;/span&gt; encoding.GetString(ms.ToArray())&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Public&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Function&lt;/span&gt; Encrypt(&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ByVal&lt;/span&gt; stringToEncrypt &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;String&lt;/span&gt;, _&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ByVal&lt;/span&gt; SEncryptionKey &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;String&lt;/span&gt;) &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;String&lt;/span&gt;&lt;br /&gt;        key &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; System.Text.Encoding.UTF8.GetBytes(&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Left&lt;/span&gt;(SEncryptionKey, 8))&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Dim&lt;/span&gt; crypto &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; RijndaelManaged()&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Dim&lt;/span&gt; inputByteArray() &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Byte&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; Encoding.UTF8.GetBytes( _&lt;br /&gt;            stringToEncrypt)&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Dim&lt;/span&gt; ms &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; MemoryStream()&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Dim&lt;/span&gt; cs &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; CryptoStream(ms, crypto.CreateEncryptor(key, IV), _&lt;br /&gt;            CryptoStreamMode.&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Write&lt;/span&gt;)&lt;br /&gt;        cs.&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Write&lt;/span&gt;(inputByteArray, 0, inputByteArray.Length)&lt;br /&gt;        cs.FlushFinalBlock()&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Return&lt;/span&gt; Convert.ToBase64String(ms.ToArray())&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Class&lt;/span&gt;&lt;/span&gt;&lt;BR&gt;Και ένα παράδειγμα χρήσης:&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Dim&lt;/span&gt; encrypter &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; Encryption64&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Dim&lt;/span&gt; clearText &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;String&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: #666666;background-color: #e4e4e4;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"Hello World!"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Dim&lt;/span&gt; encryptedString &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; encrypter.Encrypt(clearText, &lt;span style="color: #666666;background-color: #e4e4e4;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"MyPassword"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Dim&lt;/span&gt; decryptedString &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; encrypter.Decrypt(encryptedString, &lt;span style="color: #666666;background-color: #e4e4e4;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"MyPassword"&lt;/span&gt;)&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Εδώ χρειάζονται και λίγες εξηγήσεις για το τί είναι IV. Οι ισχυροί αλγόριθμοι κρυπτογράφησης δουλεύουν επάνω σε block από δεδομένα αντί για ένα-ένα byte. Το κάθε block που κρυπτογραφείται χρησιμοποιείται σαν βάση για την κρυπτογράφηση του επόμενου block. Αυτό όμως σημαίνει ότι κάπου πρέπει να δωθεί το πρώτο "κρυπτογραφημένο" block. Αυτός είναι ο ρόλος του IV (initialization vector) το οποίο καλό θα είναι να αποτελείται από τυχαία νούμερα. Στο παραπάνω παράδειγμα τα νούμερα δεν είναι και πολύ τυχαία, αλλά ο καθένας μπορεί να τα αλλάξει. Τέλος, για καλύτερη ασφάλεια δεν χρησιμοποιούμε το ίδιο το κλειδί αλλά μία μορφή του που έχει γίνει hash μερικές δεκάδες φορές. &lt;/P&gt;
&lt;P&gt;Ευτυχώς, έτσι και γράψεις μία φορά μια κλάση όπως η Encryption64 δεν χρειάζεται να ασχοληθείς ξανά με τις λεπτομέρειες υλοποίησης. Μπορείς έτσι με δύο γραμμές κώδικα, την Encrypt και την Decrypt να έχεις όσο δυνατή κρυπτογράφηση θέλεις.&lt;/P&gt;</description></item><item><title>Απ: "Μπακάλικη" κρυπτογράφηση strings σε 12 γραμμές κώδικα</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/15332.aspx</link><pubDate>Mon, 31 Jul 2006 17:44:32 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:15332</guid><dc:creator>agmarios</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/15332.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=81&amp;PostID=15332</wfw:commentRss><description>&lt;P&gt;Αγαπητέ φίλε, χωρίς να θέλω να σε προσβάλω δεν σου φταίνε σε τίποτα οι μπακάληδες. Είναι Χρησιμότατοι, είναι δίπλα σου και σου παρέχουν τα απαραίτητα ταχύτατα αλλά κοστίζουν. Κάτι δηλαδή σαν την L2 cache.&lt;/P&gt;
&lt;P&gt;Υπάρχουν τόσοι έτοιμοι αλγόριθμοι κρυπτογράφησης που περιμένουν απλά να τους καλέσεις, που καθυστούν το copy-paste του κώδικά σου πολύ κουραστικό για έναν τεμπέλη σαν κι εμένα.&lt;/P&gt;
&lt;P&gt;Μάριος&lt;/P&gt;</description></item><item><title>"Μπακάλικη" κρυπτογράφηση strings σε 12 γραμμές κώδικα</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/15321.aspx</link><pubDate>Mon, 31 Jul 2006 07:28:15 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:15321</guid><dc:creator>DrMad</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/15321.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=81&amp;PostID=15321</wfw:commentRss><description>&lt;P&gt;Είστε τεμπέλης?&lt;/P&gt;
&lt;P&gt;Θέλετε να προστατεύσετε κάποιο string με τον πιό ανασφαλή αλλά και γρήγορο τρόπο?&lt;/P&gt;
&lt;P&gt;Θα θυσιάζατε την αποτελεσματικότητα του κώδικά σας έναντι της ταχύτητας που απαιτείται για να τον γράψετε?&lt;/P&gt;
&lt;P&gt;Εάν απαντήσατε ναι στις παραπάνω ερωτήσεις, τότε η παρακάτω function είναι για εσάς: Βάζεις το κείμενο και το κωδικοποιεί, βάζεις το κωδικοποιημένο και το αποκωδικοποιεί, δεν είναι υψηλά μαθηματικά, αλλά εμένα με βόλεψε πολύ:&lt;/P&gt;
&lt;P&gt;Την βρήκα στο: &lt;A href="http://www.codeguru.com/vb/gen/vb_misc/encryption/article.php/c10343/"&gt;http://www.codeguru.com/vb/gen/vb_misc/encryption/article.php/c10343/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt; &lt;br /&gt;&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Public&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Function&lt;/span&gt; SimpleCrypt( _ &lt;br /&gt;&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ByVal&lt;/span&gt; Text &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;String&lt;/span&gt;) &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;String&lt;/span&gt; &lt;br /&gt;&lt;br /&gt; &lt;span style="color: Green;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;' Encrypts/decrypts the passed string using &lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: Green;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;' a simple ASCII value-swapping algorithm &lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Dim&lt;/span&gt; strTempChar &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;String&lt;/span&gt;, i &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Integer&lt;/span&gt; &lt;br /&gt;&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;For&lt;/span&gt; i &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; 1 &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;To&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Len&lt;/span&gt;(Text) &lt;br /&gt;&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;If&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Asc&lt;/span&gt;(&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Mid&lt;/span&gt;$(Text, i, 1)) &amp;lt; 128 &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Then&lt;/span&gt; &lt;br /&gt;&lt;br /&gt; strTempChar &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; _ &lt;br /&gt;&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;CType&lt;/span&gt;(&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Asc&lt;/span&gt;(&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Mid&lt;/span&gt;$(Text, i, 1)) &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;+&lt;/span&gt; 128, &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;String&lt;/span&gt;) &lt;br /&gt;&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ElseIf&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Asc&lt;/span&gt;(&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Mid&lt;/span&gt;$(Text, i, 1)) &amp;gt; 128 &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Then&lt;/span&gt; &lt;br /&gt;&lt;br /&gt; strTempChar &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; _ &lt;br /&gt;&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;CType&lt;/span&gt;(&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Asc&lt;/span&gt;(&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Mid&lt;/span&gt;$(Text, i, 1)) &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;-&lt;/span&gt; 128, &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;String&lt;/span&gt;) &lt;br /&gt;&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;If&lt;/span&gt; &lt;br /&gt;&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Mid&lt;/span&gt;$(Text, i, 1) &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; _ &lt;br /&gt;&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Chr&lt;/span&gt;(&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;CType&lt;/span&gt;(strTempChar, &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Integer&lt;/span&gt;)) &lt;br /&gt;&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Next&lt;/span&gt; i &lt;br /&gt;&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Return&lt;/span&gt; Text &lt;br /&gt;&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Function&lt;/span&gt; &lt;br /&gt;&lt;br /&gt; &lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;και ένα απλό παράδειγμα που έχει στο site&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Dim&lt;/span&gt; MyText &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;String&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Encrypt MyText &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: #666666;background-color: #e4e4e4;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"Karl Moore"&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;MyText &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; Crypt(MyText) MessageBox.Show(MyText)  &lt;br /&gt;&lt;br /&gt; Decrypt MyText &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; Crypt(MyText) &lt;br /&gt;&lt;br /&gt;MessageBox.Show(MyText) &lt;/span&gt;&lt;/P&gt;</description></item></channel></rss>