Modular-Arithmetic

從解密建構加密方法(逆模)

  • January 10, 2021

所以我一直在分析一些 Javascript 混淆器。我了解字元串是如何解密的,我現在的興趣是為這些字元串建構實際的加密方法。我不打算發布完整的解密方法,因為我唯一關心的是實際的加密部分,但基本上算法只是交換字元索引,所以我的目標是製作一種加密方法,將字元交換到適當的位置。

我的問題與這部分有關:

for (var r = 0; r < x; r++) {
   var f = g * (r + 72) + (g % 30846);
   var y = g * (r + 104) + (g % 25098);
   var d = f % x;
   var l = y % x;
   var n = k[d];
   k[d] = k[l];
   k[l] = n;
   g = (f + y) % 2012852
}

它遍歷所有字元,起始g值為1245836

一個週期後,g的值變為1907150,我想知道如何從新的g值回到原來的值。

逆這些操作的數學是什麼:

var f = g * (r + 72) + (g % 30846);
var y = g * (r + 104) + (g % 25098);

不想被程式碼餵飽。我實際上是在嘗試理解數學。

非常感謝

所以我的目標是製作一種將字元交換到適當位置的加密方法。

如果這是目標,那就是你要做的。

你在想“我如何生成 $ g $ (實際上, $ l, d $ values) 以相反的順序”;實際上,沒有必要。您只需計算連續的 $ l, d $ 算法生成的值,將它們儲存在數組中,而不是使用它們進行交換。然後,一旦你生成了所有 $ x $ $ l, d $ 對,然後以相反的順序執行交換(即,從最後一個 $ l, d $ 對生成)。

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