Click here to Skip to main content
15,895,084 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hello,

Encode:
C#
public static string Base64EncodingMethod(string sData)
   {
       byte[] encodingDataASBytes = System.Text.Encoding.Unicode.GetBytes(sData);
       string sReturnValues = System.Convert.ToBase64String(encodingDataASBytes);
       return sReturnValues;
   }

Decode:
C#
public static string Base64DecodingMethod(string sData)
    {
        byte[] encData = System.Convert.ToBase64String(sData);
        string result = System.Text.ASCIIEncoding.ASCII.GetString(encData);
        return result;
    }

This is my code for encode and decode.
But at decoding time one error is occured.

Error: Invalid character in a Base-64 string.


Thanks,
Posted
Updated 15-Jul-12 20:20pm
v2

Hi,

try this for encoding and decoding
C#
public static string GetEncryptedPassword(string password)
    {
        string newPass = string.Empty;
        int num = new Random().Next(1, 10);
        foreach (char ch in password)
        {
            newPass += (char)(ch + num);
        }
        newPass += (char)num;
        return newPass;
    }


C#
public static string GetDecryptedPassword(string password)
   {
       string decryptedPassword = string.Empty;
       int num = (int)password[password.Length - 1];
       password = password.Remove(password.Length - 1, 1);
       foreach (char ch in password)
       {
           decryptedPassword += (char)(ch - num);
       }
       return decryptedPassword;
   }


Best Luck
Happy Coding:)
 
Share this answer
 
While Decoding, try:
C#
string returnValue = System.Text.Encoding.UTF8.GetString(encodedDataAsBytes);
to get back the result instead of ASCII encoding.

Thus, overall:
C#
// Encode:
public static string EncodeTo64UTF8(string m_enc)
{
    byte[] toEncodeAsBytes = System.Text.Encoding.UTF8.GetBytes(m_enc);
    string returnValue = System.Convert.ToBase64String(toEncodeAsBytes);
    return returnValue;
}

// Decode:
public static string DecodeFrom64(string m_enc)
{
    byte[] encodedDataAsBytes = System.Convert.FromBase64String(m_enc);
    string returnValue = System.Text.Encoding.UTF8.GetString(encodedDataAsBytes);
    return returnValue;
}
 
Share this answer
 
I think your decode function is wrong.. Should do FromBase64String

C#
public static string Base64DecodingMethod(string encodedData)
{
    byte[] data = System.Convert.FromBase64String(encodedData);
    return System.Text.Encoding.Unicode.GetString(data);
}


My suggestion:

C#
public class Base64
{
    public static string Encode(string value, Encoding enc = null)
    {
        if (enc == null)
            enc = Encoding.UTF8; // Use UTF8 as default
        return Convert.ToBase64String(enc.GetBytes(value));
    }

    public static string Decode(string data, Encoding enc = null)
    {
        if (enc == null)
            enc = Encoding.UTF8; // Use UTF8 as default
        return enc.GetString(Convert.FromBase64String(data));
    }
}
 
Share this answer
 
v3
Comments
Pratham4950 16-Jul-12 5:14am    
I am using your code but one error is occurred.
Error: "Invalid character in a Base-64 string"
StianSandberg 16-Jul-12 5:44am    
I tried this:

class Program
{
static void Main(string[] args)
{
var stringToEncode = "Hello world. This string will be encoded and decoded";
Console.WriteLine(stringToEncode);
var encodedString = Base64.Encode(stringToEncode);
Console.WriteLine(encodedString);
var decodedString = Base64.Decode(encodedString);
Console.WriteLine(decodedString);

Console.Read();
}

public class Base64
{
public static string Encode(string value) { return Convert.ToBase64String(Encoding.UTF8.GetBytes(value)); }
public static string Decode(string data) { return Encoding.UTF8.GetString(Convert.FromBase64String(data)); }
}
}

Result:
Hello world. This string will be encoded and decoded
SGVsbG8gd29ybGQuIFRoaXMgc3RyaW5nIHdpbGwgYmUgZW5jb2RlZCBhbmQgZGVjb2RlZA==
Hello world. This string will be encoded and decoded



this works..
What are you trying to encode/decode? Are you sending this base64 encoded text in a querystring or something? Looks like you are changing the encoded value before you try to decode it.
For me your code looks too complex, You can do it in a easy manner.
Plz try below,
C#
public static string Encode(string data) { return Convert.ToBase64String(Encoding.UTF8.GetBytes(data)); }
    public static string Decode(string data) { return Encoding.UTF8.GetString(Convert.FromBase64String(data)); }


:)
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900