Modular-Arithmetic
從解密建構加密方法(逆模)
所以我一直在分析一些 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 $ 對生成)。