dvplayltd
asked on
C# secure / uncesure string
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 !
Greeting !
ASKER
Hi !
I need class that do function crypt/ decrypt string which will be saved in text file.
I need class that do function crypt/ decrypt string which will be saved in text file.
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;
}
}
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; }
}
sorry replace
return MyString;
with
return MyString[key].MyString;
return MyString;
with
return MyString[key].MyString;
its been a long day!
forgot to set the flag to true or false if the string has been encrtyped or not
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; }
}
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.
(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.
ASKER
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() ?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
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
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
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",