c - 解密——找回分割后的数字C编程

标签 c encoding decoding

我刚刚使用简单的 C 代码进行了加密。加密的工作原理如下:“您的应用程序应该读取用户输入的 4 位整数,并将每个数字替换为该数字加 7 的结果,并在新值除以 10 后得到余数: 假设我输入了 1234,加密后的值为 8,9,0,1

我正在使用下面的代码进行加密:

num1 = ((digits/1000) + 7) % 10;
num2 = ((digits/100) + 7) % 10;
num3 = ((digits/10) + 7) % 10;
num4 = ((digits/1) + 7) % 10;

现在我想做一个解密,取回我输入的值。我想知道我是否能够进行逆模运算? % 的向后计算? 意思是如果a = 3 + 4,a = 7.. 那么7 = b + 4 是多少,即b = 7-4。我是

到目前为止我尝试过的是:

dNum1= (digits/1000) % 10;
dNum2= (digits/100) %10;
dNum3= (digits/10) %10;
dNum4= (digits % 10)  ;

现在的问题是:如何从解密的值(8,9,0,1)中检索原始值? (原始值:1234)

最佳答案

由于您通过加 7 对每个数字进行编码,因此需要通过减 7 进行解码。然后,如果该值为负数,则加 10 以返回预期值。

num1 = (digits/1000) - 7;
num2 = (digits/100) - 7;
num3 = (digits/10) - 7;
num4 = (digits % 10) - 7;
if (num1 < 0) num1+=10;
if (num2 < 0) num2+=10;
if (num3 < 0) num3+=10;
if (num4 < 0) num4+=10;

编辑:

更好的是,您可以加 3,然后除以 10,这会起到同样的作用。感谢 psmears 的建议。

num1 = ((digits/1000) + 3) % 10;
num2 = ((digits/100) + 3) % 10;
num3 = ((digits/10) + 3) % 10;
num4 = ((digits/1) + 3) % 10;

编辑2:

如果您直接从编码数字转换解码数字,而不先将值移回 digits,请执行以下操作:

dNum1 = (num1 + 3) % 10;
dNum2 = (num2 + 3) % 10;
dNum3 = (num3 + 3) % 10;
dNum4 = (num4 + 3) % 10;

关于c - 解密——找回分割后的数字C编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34068488/

相关文章:

java - 如何检测非法的 UTF-8 字节序列以在 java 输入流中替换它们?

python - 在 Python 中解析巨大的、编码错误的 XML 文件

ruby-on-rails - Ruby on Rails - £ 符号麻烦

html - 使用Dart解析html和解码符号

java如何解码收到的url参数抛出BeanParam

android - 使用 NDK 在 C/C++ 中将 YUV 解码为 RGB

无法打开头文件

c - 在 C 中解析程序参数时有什么好的做法

使用 input() 函数进行 c 编程

Java URLDecoder 在与包含 % 的字符串一起使用时抛出异常