这种加密/解密算法在哪里出错了?

0 c++ encryption algorithm

我一直在用C++编写基本的字符串加密/解密算法(源代码在这里:http://pastebin.com/MLnn8D82)

我遇到的问题是它没有正确解密.加密方程是:

strInput[nPos]=(((strInput[nPos])+(nPos+1))*2);
Run Code Online (Sandbox Code Playgroud)

解密方程是:

strPassword[nPos]=(((strPassword[nPos])-(nPos+1))/2);
Run Code Online (Sandbox Code Playgroud)

当我只使用加法/减法运算符进行尝试时,它可以完美地运行.但是当我在加密中加倍并在解密中进行除法时,我得到一个看似随机的字符串输出.

起初我以为可能是因为在解密之前密码被写入文件并从文件中检索,但我尝试直接从main函数输出密码,结果我得到了相同的结果.

分割/乘法字符串有问题吗?以前使用C风格(字符串数组)字符串,但我想这可能会有所不同.

任何帮助表示赞赏!

编辑:感谢您的答案到目前为止.我知道这不安全,我不应该使用它; 我只是为了练习而做.

而且,这不是内存问题.我已经尝试在加密阶段划分而不是乘法,但我仍然得到一个随机字符串而不是原始字符串.

spe*_*rcw 8

对于某些角色来说,你的乘法很可能会溢出,这意味着你的分裂永远无法恢复原作.

另外,为什么要自己编写加密算法?如果您打算将它用于任何真实的东西,而不仅仅是学习,那么使用已知为安全的加密专家编写的库会更好.像Keyczar这样的东西是一个好主意,因为它的设计很难出错(这在密码学方面很容易做到非常微妙).