Base64进入Base64

时间:2016-12-28 13:34:17

标签: c# encryption cryptography base64

我有这个:

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

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

但是,如果您尝试解密它们,则会产生相同和正常的文本。如果是,那么请提供代码并指导他们。如果是,那么请解释。最后,如果我使用base64对它进行多次解码(假设为100)可能吗?尺寸会增加吗?我不是把它作为加密东西的主要方式(只是为了让人们知道)。

3 个答案:

答案 0 :(得分:0)

你已经做了自己尝试的所有事情:

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- 编码一个字符串的频率如何,它永远不会是一个不错的加密机制。例如,如果您在原始字符串的开头中更改某些内容,则无论您重复多少次,Base64编码值的开头都会发生变化它

foobar最多编码4次:

Zm9vYmFy
Wm05dlltRnk=
V20wNWRsbHRSbms9
VjIwd05XUnNiSFJTYm1zOQ==

doobar最多编码4次:

ZG9vYmFy 
Wkc5dlltRnk= 
V2tjNWRsbHRSbms9 
VjJ0ak5XUnNiSFJTYm1zOQ==

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

答案 1 :(得分:0)

如果你想多次对字符串进行64位编码,你可以使用这样的代码:

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

答案 2 :(得分:0)

//只需创建这些功能:

 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);