使用Base64 String对解码字符串进行编码

时间:2014-02-20 22:32:07

标签: c# encoding

我正在学习如何编码和解码字符串。这是一种将chiper文本解码为我在网络上找到的纯文本的方法。

public static string Decode(string chiperText)
{
    byte[] numArray = Convert.FromBase64String(chiperText);
    byte[] numArray1 = new byte[(int)numArray.Length - 1];
    byte num = (byte)(numArray[0] ^ 188);
    for (int i = 1; i < (int)numArray.Length; i++)
    {
        numArray1[i - 1] = (byte)(numArray[i] ^ 188 ^ num);
    }
    return Encoding.ASCII.GetString(numArray1);
}

我的问题是我不知道如何编码到原始状态。我尝试这种方法但它不起作用。

public static string Encode(string plainText)
{
    byte[] bytes = Encoding.ASCII.GetBytes(plainText);

    byte[] results = new byte[(int)bytes.Length - 1];

    byte num = (byte)(bytes[0] ^ 188);
    for (int i = 1; i < bytes.Length; i++)
    {
        results[i - 1] = (byte)(bytes[i] ^ 188 ^ num);
    }

    return Convert.ToBase64String(results);
}

1 个答案:

答案 0 :(得分:0)

虽然我完全同意SLaks评论上述内容并不构成您应该使用的任何类型的加密,但以下过程将生成您要解密的“加密”数据:

public static string Encode(string plainText)
{
    byte[] numArray = System.Text.Encoding.Default.GetBytes(plainText);
    byte[] numArray1 = new byte[(int)numArray.Length + 1];
    // Generate a random byte as the seed used
    (new Random()).NextBytes(numArray1);
    byte num = (byte)(numArray1[0] ^ 188);
    numArray1[0] = numArray1[0];
    for (int i = 0; i < (int)numArray.Length; i++)
    {
        numArray1[i + 1] = (byte)(num ^ 188 ^ numArray[i]);
    }
    return Convert.ToBase64String(numArray1);
}

请不要在一秒钟内考虑将此作为“加密”敏感数据的方法。