异或加密应该是最简单的加密了,其他算法应该都比它慢;
但是lz每字节运算是不可取的,因为32位机器是4字节边界对齐,因此,可以使用long类型数据异或,并对目标数据在4字节边境开始运算

解决方案 »

  1.   

    可以一次大块数据异或。选取合适大小的数据块来进行运算。来提升性能。
    aes等算法性能要慢的多
      

  2.   

    异或是最快的加解密算法了,无非注意在原始缓存数据上直接进行(指针操作)
    多大的数据?需要花上秒的时间处理?运算不应该成为瓶颈!你可能需要debug,判断每一步所用的时间
    如果数据块较大,应该采用适当的压缩算法
      

  3.   

    我还是要说,对现代计算机来说20秒是漫长的天文学时间,你的算法一定有大问题。
    异或运算占用的计算机cpu相当少,你应该开辟更大的缓冲区进行运算。
      

  4.   

     512 MB 的数据我每 4 字节一次异或也才用了 327 毫秒,每 2 字节一次异或 655 毫秒,每字节也才 1.2 秒,我想不明白你那20秒的数据量究竟有多大啊........    DWORD dwDataSize = (512 << 10) << 10;
        DWORD *pTest = (DWORD *)new BYTE[dwDataSize];
        DWORD dwUsedTime = GetTickCount();
        for (int i = 0; i < (dwDataSize / sizeof(DWORD)); i++)
            pTest[i] ^= 0xF0804020;
        TRACE1("Used time: %d\n", GetTickCount() - dwUsedTime);
        delete[] pTest;