来自十六进制字符串的字节转换在字母字符"G"和C#中向上保持失败

Dez*_*ndo 0 c# string cryptography bytebuffer xor

我正在尝试构建一个简单的XOR函数,用于解密单个字符的十六进制密钥.它适用于多个角色和个别角色......但仅限于"A"到"F".从"G"开始,它不断抛出"FormatException".

这是问题函数,传递两个字符串:

    // For Reference:
    // strHexKey = "G";
    // strHexInput = "1b37373331363f78151b7f2b783431333d78397828372d363c78373e783a393b3736"

    private string SCXOR_Update(string strHexKey, string strHexInput)
    {
        byte[] buffer1 = hexbuffer(strHexInput);
        byte buffer2 = Convert.ToByte(Convert.ToInt32(strHexKey, 16));
        byte[] result = buffer1;

        for (int i = 0; i < (strHexInput.Length / 2); i++)
        {
            result[i] = (byte)(buffer1[i] ^ buffer2);
        }

        return BitConverter.ToString(result).Replace("-", "");
    }
Run Code Online (Sandbox Code Playgroud)

在"byte buffer2"行抛出异常,并且仅在从字母"G"向上推进时发生.

知道我错过了什么吗?它必须在脸上瞪着我?!

提前致谢!

Aar*_*mer 5

Hex是一个基础16计数系统.它只包含以下数字 - 尽管通常也使用小写字符:

0123456789ABCDEF
Run Code Online (Sandbox Code Playgroud)