我有这个:
byte[] data = Encoding.ASCII.GetBytes("foobar");
var base64_text = Convert.ToBase64String(data);
Console.WriteLine(base64_text);
上面的代码完美无缺,但我有一个问题。以编程方式是否可以将编码的字符串再次编码为2x编码的字符串?
但是,如果您尝试解密它们,则会产生相同和正常的文本。如果是,那么请提供代码并指导他们。如果是,那么请解释。最后,如果我使用base64对它进行多次解码(假设为100)可能吗?尺寸会增加吗?我不是把它作为加密东西的主要方式(只是为了让人们知道)。
答案 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);