<?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>.NET Framework</title><link>https://www.dotnetzone.gr:443/cs/forums/14/ShowForum.aspx</link><description>Θέματα για threading, remoting, reflection, exception handling, security, regex κλπ.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Encyption-Decryption functions</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/11454.aspx</link><pubDate>Sun, 02 Apr 2006 02:29:55 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:11454</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/11454.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=11454</wfw:commentRss><description>Κλείνω την δημοσίευση ως "Εχει επιλυθεί", λογω του οτι υποψιάζομαι οτι επιλύθηκε.</description></item><item><title>Απ: Encyption-Decryption functions</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/11069.aspx</link><pubDate>Fri, 24 Mar 2006 21:10:52 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:11069</guid><dc:creator>Ioannis P</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/11069.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=11069</wfw:commentRss><description>Σας ευχαριστώ πολύ όλους :-)</description></item><item><title>Απ: Encyption-Decryption functions</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/11047.aspx</link><pubDate>Fri, 24 Mar 2006 05:51:30 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:11047</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/11047.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=11047</wfw:commentRss><description>&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;io_ 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;Η βάση είναι Oracle 9,2&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Σήμερα έπεσα τυχαία σε αυτό το προϊόν: &lt;A href="http://www.activecrypt.com/product.htm"&gt;http://www.activecrypt.com/product.htm&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Είναι για SQL Server και Oracle. Έχει και free έκδοση χωρίς time limit, απλά με μερικούς περιορισμούς (14 χαρακτήρες password). Δεν το έχω δοκιμάσει αλλά φαίνεται ενδιαφέρον...&lt;/P&gt;</description></item><item><title>Απ: Encyption-Decryption functions</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/10997.aspx</link><pubDate>Thu, 23 Mar 2006 15:48:06 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:10997</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/10997.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=10997</wfw:commentRss><description>&lt;P&gt;Θα έλεγα, κάνει ΚΑΙ αυτό που έγραψες... Βασικά, το CAB είναι πλήρης βιβλιοθήκη, δηλαδή πέρα από το Encryption/Decryption με συμμετρικά κλειδιά, σου δίνει τη δυνατότητα να δημιουργήσεις και να συγκρίνεις hashes, πράγμα απαραίτητο για να αποθηκεύεις securely τα κλειδιά σου (πχ μέσα στη βάση) και να μην τα κάνεις embed στον κώδικα όπως λέγαμε παραπάνω. Επίσης, μέσα από το CAB μπορείς να χρησιμοποιήσεις το DPAPI που είναι πιο απλό στη χρήση καθώς χρησιμοποιεί το logon info για encryption/decryption.&lt;/P&gt;</description></item><item><title>Απ: Encyption-Decryption functions</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/10996.aspx</link><pubDate>Thu, 23 Mar 2006 15:13:15 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:10996</guid><dc:creator>imanos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/10996.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=10996</wfw:commentRss><description>KelMan αν δεν κάνω λάθος ο κώδικας που έδωσα παραπάνω κάνει αυτό που λές στο τελευταίο σου post. Διόρθωσέ με.</description></item><item><title>Απ: Encyption-Decryption functions</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/10982.aspx</link><pubDate>Thu, 23 Mar 2006 01:16:46 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:10982</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/10982.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=10982</wfw:commentRss><description>&lt;P&gt;Χμμμ... Θα σου πρότεινα να ασχοληθείς με το Cryptography Application Block από την Enterprise Library.&lt;/P&gt;
&lt;P&gt;Ρίξε μια ματιά εδώ: &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlibjan2006_cryptoappblock.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlibjan2006_cryptoappblock.asp&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Encyption-Decryption functions</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/10975.aspx</link><pubDate>Wed, 22 Mar 2006 22:07:22 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:10975</guid><dc:creator>Ioannis P</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/10975.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=10975</wfw:commentRss><description>Η βάση είναι Oracle 9,2</description></item><item><title>Απ: Encyption-Decryption functions</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/10969.aspx</link><pubDate>Wed, 22 Mar 2006 21:33:53 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:10969</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/10969.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=10969</wfw:commentRss><description>&lt;P&gt;Αν χρησιμοποιήσεις SQL Server 2005 (σε όλες τις εκδόσεις, ακόμα και στην Express), παρέχεται native encryption που μπορείς να κάνεις implement σε συγκερκιμένα columns που θα επιλέξεις. Ως προς την αποθήκευση των κλειδιών αυτό είναι θέμα που απαιτεί αρκετά considerations. Αλλά γενικά να μπουν μέσα στο EXE δεν είναι και τόσο ευέλικτη λύση...&lt;/P&gt;</description></item><item><title>Απ: Encyption-Decryption functions</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/10968.aspx</link><pubDate>Wed, 22 Mar 2006 21:31:55 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:10968</guid><dc:creator>imanos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/10968.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=10968</wfw:commentRss><description>Ο κώδικας που έχεις είναι σωστός  αλλά ρίξε και μια ματιά σ'αυτό&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Imports System.Security.Cryptography&lt;br /&gt;&lt;br /&gt;Imports System.IO&lt;br /&gt;&lt;br /&gt;Imports System.Text&lt;br /&gt;&lt;br /&gt;Imports System.Web&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;'SymmCrypto is a wrapper of System.Security.Cryptography.SymmetricAlgorithm classes&lt;br /&gt;&lt;br /&gt;'and simplifies the interface. It supports customized SymmetricAlgorithm as well.&lt;br /&gt;&lt;br /&gt;'Original Code from Frank Fang&lt;br /&gt;&lt;br /&gt;'Revised by Jerome Howard to remove Bad Data errors, create seperate CryptoIV and&lt;br /&gt;&lt;br /&gt;'use the maximum legal keysize for each encryption algorithm&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Public Class Crypto&lt;br /&gt;&lt;br /&gt;    '256 Bit IV Key that is truncated when a smaller keys are required&lt;br /&gt;&lt;br /&gt;    Private bytIV() As Byte = _&lt;br /&gt;&lt;br /&gt;    {12, 241, 10, 21, 90, 74, 11, 39, 9, 91, 45, 78, 189, 211, 133, 62, 121, 22, 101, 34, 90, 74, 121, 39, 93, 9, 45, 78, 1, 211, 33, 162}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    'Supported .Net intrinsic SymmetricAlgorithm classes.&lt;br /&gt;&lt;br /&gt;    Public Enum Providers&lt;br /&gt;&lt;br /&gt;        DES&lt;br /&gt;&lt;br /&gt;        RC2&lt;br /&gt;&lt;br /&gt;        Rijndael&lt;br /&gt;&lt;br /&gt;    End Enum&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    Private _CryptoService As SymmetricAlgorithm&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    'Constructor for using an intrinsic .Net SymmetricAlgorithm class.&lt;br /&gt;&lt;br /&gt;    Public Sub New(ByVal NetSelected As Providers)&lt;br /&gt;&lt;br /&gt;        Select Case NetSelected&lt;br /&gt;&lt;br /&gt;            Case Providers.DES&lt;br /&gt;&lt;br /&gt;                _CryptoService = New DESCryptoServiceProvider()&lt;br /&gt;&lt;br /&gt;            Case Providers.RC2&lt;br /&gt;&lt;br /&gt;                _CryptoService = New RC2CryptoServiceProvider()&lt;br /&gt;&lt;br /&gt;            Case Providers.Rijndael&lt;br /&gt;&lt;br /&gt;                _CryptoService = New RijndaelManaged()&lt;br /&gt;&lt;br /&gt;        End Select&lt;br /&gt;&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    'Constructor for using a customized SymmetricAlgorithm class.&lt;br /&gt;&lt;br /&gt;    Public Sub New(ByVal ServiceProvider As SymmetricAlgorithm)&lt;br /&gt;&lt;br /&gt;        _CryptoService = ServiceProvider&lt;br /&gt;&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    'Depending on the legal key size limitations of a specific CryptoService provider&lt;br /&gt;&lt;br /&gt;    'and length of the private key provided, padding the secret key with a character&lt;br /&gt;&lt;br /&gt;    'or triming it to meet the legal size of the algorithm.&lt;br /&gt;&lt;br /&gt;    Private Function GetLegalKey(ByVal Key As String) As Byte()&lt;br /&gt;&lt;br /&gt;        'key sizes are in bits&lt;br /&gt;&lt;br /&gt;        Dim sTemp As String&lt;br /&gt;&lt;br /&gt;        If (_CryptoService.LegalKeySizes.Length &gt; 0) Then&lt;br /&gt;&lt;br /&gt;            Dim maxSize As Integer = _CryptoService.LegalKeySizes(0).MaxSize&lt;br /&gt;&lt;br /&gt;            If Key.Length * 8 &gt; maxSize Then&lt;br /&gt;&lt;br /&gt;                sTemp = Key.Substring(0, (maxSize / 8))&lt;br /&gt;&lt;br /&gt;            Else&lt;br /&gt;&lt;br /&gt;                Dim moreSize As Integer = _CryptoService.LegalKeySizes(0).MinSize&lt;br /&gt;&lt;br /&gt;                Do While (Key.Length * 8 &gt; moreSize)&lt;br /&gt;&lt;br /&gt;                    moreSize += _CryptoService.LegalKeySizes(0).SkipSize&lt;br /&gt;&lt;br /&gt;                Loop&lt;br /&gt;&lt;br /&gt;                sTemp = Key.PadRight(moreSize / 8, "X")&lt;br /&gt;&lt;br /&gt;            End If&lt;br /&gt;&lt;br /&gt;        Else&lt;br /&gt;&lt;br /&gt;            sTemp = Key&lt;br /&gt;&lt;br /&gt;        End If&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       'Ensure that the IV Block size is also correct for the specific CryptoService provider&lt;br /&gt;&lt;br /&gt;       If (_CryptoService.LegalBlockSizes.Length &gt; 0) Then&lt;br /&gt;&lt;br /&gt;            Dim maxSize As Integer = _CryptoService.LegalBlockSizes(0).MaxSize&lt;br /&gt;&lt;br /&gt;            ReDim Preserve bytIV(sTemp.Length - 1)&lt;br /&gt;&lt;br /&gt;            If sTemp.Length * 8 &gt; maxSize Then&lt;br /&gt;&lt;br /&gt;                ReDim Preserve bytIV(maxSize / 8 - 1)&lt;br /&gt;&lt;br /&gt;            End If&lt;br /&gt;&lt;br /&gt;        End If&lt;br /&gt;&lt;br /&gt;        'convert the secret key to byte array&lt;br /&gt;&lt;br /&gt;        Return ASCIIEncoding.ASCII.GetBytes(sTemp)&lt;br /&gt;&lt;br /&gt;    End Function&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    Public Function Encrypt(ByVal Source As String, ByVal Key As String) As String&lt;br /&gt;&lt;br /&gt;        Dim bytIn As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(System.Web.HttpUtility.UrlEncode(Source))&lt;br /&gt;&lt;br /&gt;        Dim ms As MemoryStream = New MemoryStream()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        'set the keys&lt;br /&gt;&lt;br /&gt;        _CryptoService.Key = GetLegalKey(Key)&lt;br /&gt;&lt;br /&gt;        _CryptoService.IV = bytIV&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        'create an Encryptor from the Provider Service instance&lt;br /&gt;&lt;br /&gt;        Dim encrypto As ICryptoTransform = _CryptoService.CreateEncryptor()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        'create Crypto Stream that transforms a stream using the encryption&lt;br /&gt;&lt;br /&gt;        Dim cs As CryptoStream = New CryptoStream(ms, encrypto, CryptoStreamMode.Write)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        'write out encrypted content into MemoryStream&lt;br /&gt;&lt;br /&gt;        cs.Write(bytIn, 0, bytIn.Length)&lt;br /&gt;&lt;br /&gt;        cs.FlushFinalBlock()&lt;br /&gt;&lt;br /&gt;        cs.Close()&lt;br /&gt;&lt;br /&gt;        Dim bytOut() As Byte = ms.ToArray()&lt;br /&gt;&lt;br /&gt;        ms.Close()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        Return Convert.ToBase64String(bytOut) 'convert into Base64 so that the result can be used in xml&lt;br /&gt;&lt;br /&gt;    End Function&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    Public Function Decrypt(ByVal Source As String, ByVal Key As String) As String&lt;br /&gt;&lt;br /&gt;        'convert from Base64 to binary&lt;br /&gt;&lt;br /&gt;        Dim bytIn As Byte() = System.Convert.FromBase64String(Source)&lt;br /&gt;&lt;br /&gt;        Dim ms As MemoryStream = New MemoryStream(bytIn)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        Dim bytKey() As Byte = GetLegalKey(Key)&lt;br /&gt;&lt;br /&gt;        Dim bytTemp(bytIn.Length) As Byte&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        'set the private key&lt;br /&gt;&lt;br /&gt;        _CryptoService.Key = bytKey&lt;br /&gt;&lt;br /&gt;        _CryptoService.IV = bytIV&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        'create a Decryptor from the Provider Service instance&lt;br /&gt;&lt;br /&gt;        Dim encrypto As ICryptoTransform = _CryptoService.CreateDecryptor()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        'create Crypto Stream that transforms a stream using the decryption&lt;br /&gt;&lt;br /&gt;        Dim cs As CryptoStream = New CryptoStream(ms, encrypto, CryptoStreamMode.Read)&lt;br /&gt;&lt;br /&gt;        Dim output As String&lt;br /&gt;&lt;br /&gt;        Try&lt;br /&gt;&lt;br /&gt;            'read out the result from the Crypto Stream&lt;br /&gt;&lt;br /&gt;            Dim sr As New StreamReader(cs)&lt;br /&gt;&lt;br /&gt;            output = sr.ReadToEnd&lt;br /&gt;&lt;br /&gt;            sr.Close()&lt;br /&gt;&lt;br /&gt;            ms.Close()&lt;br /&gt;&lt;br /&gt;            cs.Close()&lt;br /&gt;&lt;br /&gt;        Catch ex As Exception&lt;br /&gt;&lt;br /&gt;        End Try&lt;br /&gt;&lt;br /&gt;        Return System.Web.HttpUtility.UrlDecode(output) 'Encoding.ASCII.GetString(bytTemp))&lt;br /&gt;&lt;br /&gt;    End Function&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;End Class</description></item><item><title>Απ: Encyption-Decryption functions</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/10966.aspx</link><pubDate>Wed, 22 Mar 2006 21:06:01 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:10966</guid><dc:creator>Ioannis P</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/10966.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=10966</wfw:commentRss><description>Κάποια δεδομένα στη βάση (πολύ μικρά κείμενα rtf) που κάποια από αυτά τα βλέπουν όλοι οι χρήστες, είναι λίγο ευαίσθητα και δεν θέλω να μπορεί ο καθένας να τα δει κάνοντας απλά ένα select. &lt;br /&gt;&lt;br /&gt;Βασικά δεν θέλω να προστατευθούν τα δεδομένα από τους χρήστες αλλά από κάποιο πχ περίεργο τεχνικό. &lt;br /&gt;&lt;br /&gt;Τα κλειδιά θα είναι στο ίδιο το exe γιατί δεν ξέρω που αλλού θα μπορούσαν να είναι. Όσον αφορά το performance μια μικρή καθυστέρηση είναι αποδεκτή.</description></item><item><title>Απ: Encyption-Decryption functions</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/10965.aspx</link><pubDate>Wed, 22 Mar 2006 20:38:11 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:10965</guid><dc:creator>imanos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/10965.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=10965</wfw:commentRss><description>Αν είναι dll δεν χρειάζεται καν decompiler κάνει import to dll και επειδή είναι public οι functions απλά τις χρησημοποιεί.&lt;br /&gt;&lt;br /&gt;Οπότε πρέπει τα κλειδιά που χρησιμοποιείς νά τα αποθηκεύεις κάπου αλλού.&lt;br /&gt;&lt;br /&gt;Πάντως άν τα στοιχεία που θέλεις να κάνεις κρυπτογράφηση στην βάση δέν είναι ευαίσθητα (π.χ. password χρηστών) τότε νομίζω οτι το νακρυπτογραφείς ότι στέλνεις στην βάση θά έχει μεγάλη επίδραση στο performance του application.</description></item><item><title>Απ: Encyption-Decryption functions</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/10963.aspx</link><pubDate>Wed, 22 Mar 2006 19:45:22 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:10963</guid><dc:creator>Χρήστος Γεωργακόπουλος</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/10963.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=10963</wfw:commentRss><description>&lt;P&gt;Οπότε αν ανοίξει κάποιος το dll ή το exe σου με έναν decompiler, μπορεί να διαβάσει τα κλειδιά που χρησιμοποιείς, και αν αποκτήσει πρόσβαση στη βάση θα μπορέσει να αποκρυπτογραφήσει όλα σου τα δεδομένα. Είσαι εντάξει με αυτό το σενάριο;&lt;/P&gt;
&lt;P&gt;Πες μας λίγα παραπάνω για τα στοιχεία που θέλεις να κρυπτογραφήσεις. Είναι passwords χρηστών; Είναι άλλα δεδομένα που ανήκουν σε συγκεκριμένους χρήστες; Ποιοι θα έχουν πρόσβαση σε αυτά;&lt;/P&gt;</description></item><item><title>Encyption-Decryption functions</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/10961.aspx</link><pubDate>Wed, 22 Mar 2006 19:07:11 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:10961</guid><dc:creator>Ioannis P</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/10961.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=10961</wfw:commentRss><description>Θέλω να αποθηκεύω τα δεδομένα σε μια βάση κωδικοποιημένα και όταν τα διαβάζω να τα αποκωδικοποιώ. Βρήκα δυο functions που κάνουν encryption/decryption και θα ήθελα να τις ρίξετε μια ματιά πριν τις χρησιμοποιήσω. Βασικά θέλω να μου πείτε αν είναι σωστός ο τρόπος που γίνεται η κωδικοποίηση (λειτουργούν και οι δύο κανονικά) και τι θα πρέπει να κάνω με το hash.&lt;br&gt;&lt;br&gt;Ευχαριστώ προκαταβολικά.&lt;br&gt;&lt;br&gt;&lt;font color="#0000ff"&gt;Imports System&lt;br&gt;Imports System.Security&lt;br&gt;Imports System.Security.Cryptography&lt;br&gt;&lt;br&gt;Public genKey As String = "d%HF#gkdjh#89$*GJ#%%@WF!@F:Lqe:?" &lt;br&gt;Public genIV As String = "jkh$%#JLD{FSo*d|" &lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Function Getkey() As Byte()&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Getkey = System.Text.Encoding.Default.GetBytes(genKey)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Function Encrypt(ByVal vText As String) As String&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim msin As New System.IO.MemoryStream()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msin.Write(System.Text.Encoding.Default.GetBytes(vText), 0, System.Text.Encoding.Default.GetBytes(vText).Length)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msin.Position = 0&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim msout As New System.IO.MemoryStream()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim buf() As Byte = New Byte(2048) {}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim sa As SymmetricAlgorithm = SymmetricAlgorithm.Create("Rijndael")&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sa.IV = System.Text.Encoding.Default.GetBytes(genIV)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sa.Key = Getkey()&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim trans As ICryptoTransform = sa.CreateEncryptor()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim cs As CryptoStream = New CryptoStream(msout, trans, CryptoStreamMode.Write)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim nLen As Integer&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nLen = msin.Read(buf, 0, buf.Length)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; While (nLen &amp;gt; 0)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cs.Write(buf, 0, nLen)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nLen = msin.Read(buf, 0, buf.Length)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End While&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cs.FlushFinalBlock()&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Encrypt = System.Convert.ToBase64String(msout.ToArray)&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cs.Close()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msin.Close()&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Function Decrypt(ByVal vText As String) As String&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim msin As New System.IO.MemoryStream()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msin.Write(Convert.FromBase64String(vText), 0, Convert.FromBase64String(vText).Length)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msin.Position = 0&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim msout As New System.IO.MemoryStream()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim buf() As Byte = New Byte(2048) {}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim sa As SymmetricAlgorithm = SymmetricAlgorithm.Create("Rijndael")&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sa.IV = System.Text.Encoding.Default.GetBytes(genIV)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sa.Key = Getkey()&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim trans As ICryptoTransform = sa.CreateDecryptor()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim cs As CryptoStream = New CryptoStream(msin, trans, CryptoStreamMode.Read)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim nLen As Integer&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nLen = cs.Read(buf, 0, buf.Length)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; While (nLen &amp;gt; 0)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msout.Write(buf, 0, nLen)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nLen = cs.Read(buf, 0, buf.Length)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End While&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Decrypt = System.Text.Encoding.Default.GetString(msout.ToArray)&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msin.Close()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msout.Close()&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function&lt;/font&gt;&lt;br&gt;</description></item></channel></rss>