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);
我有这个:
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);