【发布时间】:2012-02-29 13:48:17
【问题描述】:
我一直在研究 C++ 中的基本字符串加密/解密算法(源代码在这里:http://pastebin.com/MLnn8D82)
我遇到的问题是它没有正确解密。加密方程为:
strInput[nPos]=(((strInput[nPos])+(nPos+1))*2);
而解密方程为:
strPassword[nPos]=(((strPassword[nPos])-(nPos+1))/2);
当我尝试仅使用加法/减法运算符时,它可以完美运行。但是当我在加密中相乘并在解密中除法时,我得到了一个看似随机的字符串输出。
起初我以为可能是因为密码是在解密之前写入文件并从文件中检索的,但我尝试直接从 main 函数输出它,最终得到了相同的结果。
字符串除法/乘法有问题吗?它以前使用 C 样式(字符数组)字符串,但我想这可能会有所不同。
感谢任何帮助!
编辑:感谢到目前为止的答案。我知道这不安全,我不应该使用它;我只是为了练习。
另外,这不是内存问题。我尝试在加密阶段进行除法而不是乘法,但我仍然得到一个随机字符串而不是原始字符串。
【问题讨论】:
-
如果计算结果的值大于 char 可以容纳的值会怎样?
-
创建自己的算法而不是使用标准算法已经是错误的了。
标签: c++ algorithm encryption