Algorithm-Design
如何解決像對稱加密一樣的rubix-cube
因此,在大學的一個項目中,我編寫了一個對稱加密系統,它與 rubix 立方體的工作方式非常相似。我將數據的每個字節映射到網格中的一個元素,總共有 6 個網格(形成一個立方體),並且這些網格有一個關係,您可以將交換函式應用於每一行/列,並且交換相同在同一方向的網格中的 4 條線。它一次可以加密多達 4 mb 的數據(64 x 64 網格),並使用過程中使用的一組移動作為密鑰(面對 1 行 27 左交換等)
該系統的問題是我自己還沒有解決過一個rubix立方體……曾經。所以我設法將我的初始數據弄得一團糟,當我試圖破譯它時(進行相反方向的交換,從最後一次交換到第一次),它仍然是一團糟。
由於硬碟損壞,我無法再向您展示我為它編寫的程式碼(它是用 java 編寫的),但我打算在業餘時間嘗試重新創建該項目,我想看看我能做些什麼來防止再次創建數據粉碎機。
非常感謝您的幫助,如有必要,我將提供額外的說明。
**編輯:**問題是這是解決魔方的正確方法(反轉動作)嗎?如果不是,正確的方法是什麼?
除了這個轉置階段之外,該系統還有更多階段,但它們不是由它們製造的,因此執行良好:)
這是解決魔方(反轉動作)的正確方法嗎?
這實際上不是關於密碼學的問題,並且可能更適合數學甚至令人費解的 stackexchange 站點。
話雖這麼說,雖然反轉移動是一種方式,並且考慮到您使用移動的順序作為密鑰,這可能是您用來撤消密碼換位的方式,但這並不一定意味著給定一個實際的魔方解決方案是反轉將其從初始位置洗牌的動作。
如果沒有,正確的方法是什麼?
顯然存在以 20 步求解傳統 3x3x3 立方體的最優算法。這些似乎並不假定您正在反轉洗牌多維數據集的步驟。您的設置可能更大,但這對於將改組用作某種加密硬度假設仍然不是一個好兆頭。