Base64 成Base64

Base64 Into Base64

我有这个:

byte[] data = Encoding.ASCII.GetBytes("foobar");
var base64_text = Convert.ToBase64String(data);
Console.WriteLine(base64_text);

上面的代码运行完美,但我有一个问题。是否可以通过编程方式将编码字符串再次编码为 2x 编码字符串?

但是,如果您尝试解密它们,将得到相同的正常文本。如果是,请提供代码并指导他们。如果否,请解释。最后,如果我使用 base64 对其进行多次解码(比如 100 次),是否可能?尺寸会增加吗?我这样做并不是作为加密内容的主要方式(只是为了让人们知道)。

您已经完成了自己尝试此操作所需的一切:

byte[] data = Encoding.ASCII.GetBytes("foobar");
var base64_text = Convert.ToBase64String(data);
Console.WriteLine(base64_text);

data = Encoding.ASCII.GetBytes(base64_text);
base64_text = Convert.ToBase64String(data);
Console.WriteLine(base64_text);

您会发现每次执行编码时数据都会发生变化和增长,您可以想象您需要执行相同次数的解码操作才能取回原始字符串。

如前所述,无论您多频繁地对字符串进行 Base64-编码,它永远都不是一个像样的加密机制。例如,如果您更改原始字符串的 beginning 中的内容,则 Base64 编码值的 beginning 中的内容也会发生更改,无论如何你已经重复了很多次了。

foobar最多编码4次:

Zm9vYmFy
Wm05dlltRnk=
V20wNWRsbHRSbms9
VjIwd05XUnNiSFJTYm1zOQ==

doobar最多编码4次:

ZG9vYmFy 
Wkc5dlltRnk= 
V2tjNWRsbHRSbms9 
VjJ0ak5XUnNiSFJTYm1zOQ==

经常出现在编码字符串末尾的等号(===)是您正在使用 Base64 的快速赠品。

如果您想多次对字符串进行 base64 编码,您可以使用如下代码:

string text = "foobar";
for (int i = 0; i < 10; i++)
{
    text = Convert.ToBase64String(Encoding.ASCII.GetBytes(text));       
    Console.WriteLine(text);
}

//只需创建这些函数:

 public string  Encode (string EncodingText,int NumberOfTimesYouWantToEncode)
    {
        byte[] data;
        string base64_text = EncodingText;
        for (int i = 0; i < NumberOfTimesYouWantToEncode; i++)
        {
            data = Encoding.ASCII.GetBytes(base64_text);
            base64_text = Convert.ToBase64String(data);

        }
        return base64_text;
    }


    public string Decode(string EncodingText, int NumberOfTimesYouNeedToDecode)
    {
        byte[] data;
        string decodedString = EncodingText;
        for (int i = 0; i < NumberOfTimesYouNeedToDecode; i++)
        {
            data = Convert.FromBase64String(decodedString);
            decodedString = Encoding.ASCII.GetString(data);
        }
        return decodedString;
    }

//调用这些函数如下:

 string EncodedString= Encode ("foobar", 3);
 string DecodedString=Decode(EncodedString,3);