Xor
你能認出這個算法嗎?
我們正在嘗試將我們的應用程序集成到第三方系統中。為此,我們需要將加密密碼傳遞到該系統。我已經反編譯了程序集並查看了程式碼,它們似乎使用了類似於 XOR 加密的東西(在生產系統中……)從我可以從反編譯的程式碼中看到它做了這樣的事情:
下面的虛擬碼是錯誤的。這是原始碼的連結,經過反編譯,轉換為 C# 並進行了一些清理:http: //pastebin.com/rAcXPvL6
string key = "1234567890123456" string plainText = "test" int[] keyData = GetAsciiValuesAsArray(key) int[] plainData = GetAsciiValuesAsArray(plainText) int prime = GeneratePrimeNumber() string cipherText = "" foreach(plainTextChar in plainData) { int a = prime / 256.0 * 256.0 - prime % 256 / 256.0 int b = prime % 256 for(int i = 0; i < 16;i++) { keyData[i] = keyData[i] ^ GetAsciiValue(plainTextChar); } plainTextChar = plainTextChar ^ (a ^ b) int c = (plainTextChar / 16.0 * 16.0 - (plainTextChar % 16)) / 16.0; int d = plainTextChar = % 16 cipherText = cipherText + ConvertFromAscii(c + 97) + ConvertFromAscii(d + 97) }
這對任何人來說似乎都很熟悉嗎?希望這是一種公認的算法,而不是他們自己拼湊的東西。
謝謝,
喬
第一:在這個網站上分析程式碼是題外話,不要期望太多。
對於這個問題:“永遠不要編寫自己的加密貨幣”是一個聲明,這常常被忽視。沒有深入探勘,它看起來像一些自製(並且完全不安全)的算法:根本不使用密鑰,因此它基本上是具有確定性密鑰流的流密碼(一次一個符號)。
建議:不要使用這個,以後也不要使用他們的加密實現。並非每個錯誤都像這個錯誤一樣容易檢測。在加密貨幣中,你可以做很多錯誤的事情。