我有以下方法需要純文本和關鍵文本。它應該返回一個使用XOR方法加密的字符串ascii。XOR密碼是否有任何規則?
public static string encryptXOREng(string plainText,string keyText)
{
StringBuilder chiffreText = new StringBuilder();
byte[] binaryPlainText = System.Text.Encoding.ASCII.GetBytes(plainText);
byte[] binaryKeyText = System.Text.Encoding.ASCII.GetBytes(keyText);
for(int i = 0;i<plainText.Length;i++)
{
int result = binaryPlainText[i]^binaryKeyText[i];
chiffreText.Append(Convert.ToChar(result));
}
return chiffreText.ToString();
}
對於一些字符,它運行得很好。但是,例如,如果它在'G'&'M'上執行XOR,這是71 XOR 77,它返回10.並且10代表換行。然後,這實際上不是由我的輸出中的字符表示的。這導致長度的純文本被加密爲只有2個字符長的密碼串,在某些情況下。我想這會使解密變得不可能,即使是一個密鑰?或者是那裏的ascii字符0 - 31,但根本不可見?
我知道,這只是一個示例,我也調整了一個調整鍵的方法。 –
也轉換爲Base64會限制輸出字符的範圍,不是嗎? –
@bodycountPP是的,它將包含* 64 *不同(可打印)字符:) –