文件字节数组加密会破坏文本文档以外的文件

时间:2013-12-16 03:35:42

标签: c# encryption bytearray

我做了一个简单的文件二进制加密/解密,它适用于任何文本文档。 但是当我加密和解密图像/ word文档文件时,文件损坏了。 我不明白为什么会这样。

这是获取文件字节数组的代码。

byte[] b = null;

            using (System.IO.FileStream fr = new System.IO.FileStream(this.txtFile.Text, System.IO.FileMode.Open))
            {
                using (System.IO.BinaryReader br = new System.IO.BinaryReader(fr))
                {
                    b = br.ReadBytes((int)fr.Length);
                }
            }

这就是我写回所有字节的方式。

System.IO.File.WriteAllBytes(filepath, b);

有人可以向我解释原因吗?

编辑:这是我的加密/解密代码。 对不起,如果它凌乱,我是加密的新手。

for (int i = 0; i < b.Length; i++)
        {
            if (keyIndex >= key.Length)
            {
                keyIndex = 0;
            }

            string fileBIN = Convert.ToString(b[i], 2);
            string keyBIN = Convert.ToString(Convert.ToInt32(Convert.ToChar(key[keyIndex])), 2);
            string newBIN = string.Empty;

            keyIndex += 1;

            if (fileBIN.Length > keyBIN.Length)
            {
                for (int x = 0; x < Math.Abs(fileBIN.Length - keyBIN.Length); x++) { keyBIN = "0" + keyBIN; x -= 1; }
            }
            else
            {
                for (int x = 0; x < Math.Abs(fileBIN.Length - keyBIN.Length); x++) { fileBIN = "0" + fileBIN; x -= 1; }
            }

            if (fileBIN == keyBIN)
            {
                newBIN = fileBIN;
            }
            else
            {
                for (int x = 0; x < fileBIN.Length; x++)
                {
                    if (fileBIN.Substring(x, 1).ToString() == keyBIN.Substring(x, 1).ToString()) { newBIN += "0"; }
                    else { newBIN += "1"; }
                }
            }

            b[i] = Convert.ToByte(newBIN, 2);
        }

0 个答案:

没有答案