?
Solved

C# secure / uncesure string

Posted on 2008-10-16
10
Medium Priority
?
513 Views
Last Modified: 2013-12-17
I need in C# 2008 NET 2.0 simple static class  which secure / unsecure string which will be saved in text file. Will be good to be with some key, mean that with different kay to provide different secure string.

Greeting !
0
Comment
Question by:dvplayltd
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 2
  • 2
10 Comments
 
LVL 1

Expert Comment

by:MarkMyburgh
ID: 22730225
HI
query: what do yo mean secure string?  do you have a string encripyted?
you could do something like

var Dic = new Dictionary<string, string>)()

dictionary.Add("Secure", "some string");
dictionary.Add("Unsecure", "some string");
0
 

Author Comment

by:dvplayltd
ID: 22730333
Hi !

 I need class that do function crypt/ decrypt string which will be saved in text file.
0
 
LVL 1

Expert Comment

by:MarkMyburgh
ID: 22730973
you could try implementing something like this
class test
{
    enum StringType
	{
        Encrypt,
        Decrypt	         
	}
 
    private static string MyString { get; set; }
 
    static string GetString(StringType type)
    {
 
        switch (type)
       {
            case StringType.Decrypt: MyString = DoDecrypt(); break;
            case StringType.Encrypt: MyString = DoEncrypt(); break;
        }
        return MyString;
    }
  
}

Open in new window

0
Interactive Way of Training for the AWS CSA Exam

An interactive way of learning that will help you visualize core concepts so that you can be more effective when taking your AWS certification exam.  Built for students by a student to help them understand the concepts that they are being taught.

 
LVL 1

Expert Comment

by:MarkMyburgh
ID: 22731074
or if you want to store mutliple strings
 

class test
{
    enum StringType
	{
        Encrypt,
        Decrypt	         
	}
 
    static private Dictionary<string, StringStruc> MyString { get; set; }
    
    static string GetString(string key, StringType type)
    {
 
        switch (type)
       {
            case StringType.Decrypt: 
                {
                    if (MyString[key].Encrypted)
                    {
                        MyString[key].MyString = DoDecrypt();
                    }                    
                }
            case StringType.Encrypt:
                {
                    if (!MyString[key].Encrypted)
                    {
                        MyString[key].MyString = DoEncrypt();
                    }
                }
        }
        return MyString;
    }
  
}
 
struct StringStruc
{
    public string MyString { get; set; }
    public bool Encrypted { get; set; }
}

Open in new window

0
 
LVL 1

Expert Comment

by:MarkMyburgh
ID: 22731124
sorry replace
         return MyString;

with

return MyString[key].MyString;
0
 
LVL 1

Expert Comment

by:MarkMyburgh
ID: 22731336
its been a long day!
forgot to set the flag to true or false if the string has been encrtyped or not

class test
{
    enum StringType
    {
        Encrypt,
        Decrypt
    }
 
    static private Dictionary<string, StringStruc> MyString { get; set; }
 
    static string GetString(string key, StringType type)
    {
 
        switch (type)
        {
            case StringType.Decrypt:
                {
                    if (MyString[key].Encrypted)
                    {
                        MyString[key].MyString = DoDecrypt();
                        MyString[key].Encrypted = false;
                    }
                }
            case StringType.Encrypt:
                {
                    if (!MyString[key].Encrypted)
                    {
                        MyString[key].MyString = DoEncrypt();
                        MyString[key].Encrypted = true;
                    }
                }
        }
        return MyString[key].MyString; 
    }
 
}
 
struct StringStruc
{
    public string MyString { get; set; }
    public bool Encrypted { get; set; }
}

Open in new window

0
 
LVL 86

Expert Comment

by:Mike Tomlinson
ID: 22732535
You first need to determine whether you need actual ENCRYPTION or a HASH.

(1) Encryption: The value is encoded with a key and stored somewhere.  Then you can retrieve the encoded value, decode it with the key, and you end up with the original value.  This is a TWO WAY system, otherwise known as a symmetric algorithm.  A credit card number would need encryption since you need the actual value to purchase something.  If the "key" is compromised then the data is compromised.

(2) Hashing: The value is "hashed" and converted it to a fixed length value using a hashing algorithm.  Different hash algorithms produce different lengths of hashes.  Then you store the hash somewhere.  Now you can determine if a value entered by the user is the same as the original value by comparing the hashes.  You hash the current value and see if that hash matches the original hash.  A hash is a ONE WAY system.  You CANNOT get the original value back from the hash.  Passwords are often stored as Hashes since you can't figure out what the original value was from looking at the hash.  There is no "key" that can be compromised with hashing.

0
 

Author Comment

by:dvplayltd
ID: 22732861
Encryption is good enough. I will test you example soon. I hope that is full - I mean that with copy/paste will work . IN first look - I don't see code for function DoEncrypt() and DoDecrypt() ?
0
 
LVL 86

Accepted Solution

by:
Mike Tomlinson earned 1500 total points
ID: 22733048
0
 
LVL 1

Expert Comment

by:MarkMyburgh
ID: 22733697
Hi dvplay:td
Did not have time at work to implement the encryption stuff.  have a look at the msdn link above.
else i'll try to smack something together tomorrow for you
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A basic question.. “What is the Garbage Collector?” The usual answer given back: “Garbage collector is a background thread run by the CLR for freeing up the memory space used by the objects which are no longer used by the program.” I wondered …
Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
In this video you will find out how to export Office 365 mailboxes using the built in eDiscovery tool. Bear in mind that although this method might be useful in some cases, using PST files as Office 365 backup is troublesome in a long run (more on t…
In this video, Percona Solution Engineer Rick Golba discuss how (and why) you implement high availability in a database environment. To discuss how Percona Consulting can help with your design and architecture needs for your database and infrastr…
Suggested Courses

765 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question