Random-Number-Generator

從任意數派生操作

  • June 27, 2019

我真的不知道如何表達這個問題,所以我只是提一下這個想法。這部分讓人想起(至少在精神上對白盒加密):**可以從數字中推導出算術運算嗎?**有沒有公式可以做到這一點?

所以,最簡單的例子是:

a = 4
ops = get_operations(a)
print(ops)

/* output:
*
* b = 2
* c = 2
* return b + c
*/

這個想法是簡單地有一種從值“導出”數學運算的方法。顯然,可以從上面的範例中導出不止“一個”操作。該系統不必是完整的。

我腦海中的這種“推導”算法的流程是這樣的:

  1. 獲取輸入 (k)
  2. 隨機選擇一個算術操作數 (P)y = k (P) x並儲存操作數 (P)
  3. 選擇一個隨機數 (x) 並儲存它的值
  4. 求解 (y) 並儲存它的值
  5. 現在,我們有 (P)、(x) 和 (y) 的組合,當求解時,將產生正確的輸入 (k)。

我的問題是:有人研究過這個並提出了一種更好的算法,我可以在這裡收集嗎?

有沒有公式可以做到這一點?

您的範例對我來說似乎是關於分區的問題。分區是一種將正數表示為總和的方式 $ n $ 正整數,例如:

號碼的分區 $ 5 $ 是:

  • $ 5 \space (+0) $
  • $ 4 + 1 $
  • $ 3 + 2 $
  • $ 3 + 1 + 1 $
  • $ 2 + 2 + 1 $
  • $ 2 + 1 + 1 + 1 $
  • $ 1 + 1 + 1 + 1 + 1 $

由於分區認為所有可能性都是有效的,因此任何整數的可能方式的數量 $ n $ 可以增長非常快,即可能的分區數的數目 $ 100 $ 是 $ 190,569,292 $ .

存在一些公式(有些比其他公式更複雜或更快,有些只是近似值)。

在您的範例中,您只有一次操作員,所以在這裡 $ 4 + 1 $ 和 $ 3 + 2 $ 將是一個可能性。


既然您提到了“不止一個操作”,那麼也有可能將數字表示為它們的主要因素,例如:

數字 22 的素數分解是:

  • $ 2 \times 11 $

總是只有一種可能性來表示一個數字,因為它是主要因素(如果你不關心你寫它的方式( $ 2 \times 11 $ 是相同的 $ 11 \times 2 $ )).

有很多因式分解算法,因為這仍然是一個未解決的問題( P = NP 嗎?)而且這個問題對於密碼學很重要。


我假設如果您嘗試使用除法和減法運算符執行此操作,則會出現問題,例如:

將數字表示為減法有無限可能,例如:

對於號碼 $ 5 $ :

  • $ 6 - 1 $
  • $ 7 - 2 $
  • $ 8 - 3 $
  • $ 9 - 4 $
  • $ \ldots $

引用自:https://crypto.stackexchange.com/questions/71602