我需要找到一個密鑰來解密用Xor加密的東西。我知道密鑰只有一個字節。我希望能夠蠻力猜出正確的關鍵。有沒有人可以指導我的可能鑰匙列表。另外,密鑰是十六進制還是十進制。感謝可能的一個字節異或鍵
2
A
回答
1
好了,如果該鍵是隻是一個字節,那麼就嘗試從0(0000 0000)的所有數字至255(1111 1111)
0
我提供了一種answer先前針對一些8通道XOR加密方案產生來自編碼味精和無鍵的結果。與設置和支持代碼一起找出關鍵的功能如下:
//setup a table of readable characters (characters we will expect to see in the decrypted result).
var readableCharacters=Object.create(null);
var alphanumerics=[[0x30,0x39],[0x41,0x5a],[0x61,0x7a]];
var alphabetical=[[0x41,0x5a],[0x61,0x7a]];
alphanumerics.forEach(function(range){
var indexStart=range[0];
var indexEnd=range[1];
for (var i=indexStart; i<=indexEnd; i++){
var ch=String.fromCharCode(i);
readableCharacters[ch]=1;
}
});
//add some extra characters to the table (optional)
(" ,.;:!\"'").split("").forEach(function(ch){readableCharacters[ch]=1;});
//xor decryption
function dec(nkey,ncrypt){
var ndec=nkey^ncrypt;
return ndec;
}
//find a key candidate by determining which keys correspond to the highest occurance of characters found in the readable character lookup table.
function findKeyCandidate(byteArray){
var keyResults=[];
for (var key=0; key<256; key++){
keyResults[key]=0;
byteArray.forEach(function(ncrypt){
var ndec=dec(key,ncrypt);
var dchar=String.fromCharCode(ndec);
if(readableCharacters[dchar]){
keyResults[key]++;
}
});
}
keyResults=keyResults.map(function(count,index){
return {key:index,count:count};
});
keyResults.sort(function(a,b){
return a.count-b.count;
});
return keyResults.pop().key;
}
注:輸入你需要一個實際的字節數組(即編號0-255數組)不是一個十六進制字符串(從前面的解決方案鏈接到上面的解決方案中,從十六進制轉換爲字節數組並返回)。輸出是一個字節大小的密鑰。
這一切都假定你最終會得到一條人類可讀的消息,如果你期望一些其他的消息結構/組合,那麼你需要根據你期望找到的代碼來修改代碼。
相關問題
- 1. 過濾掉具有一定值的字節並異或下一個字節
- 2. 異或字節數組(Shellcode)
- 3. OutputStream.write - 可能只有字節?或者int轉換爲字節?
- 4. Python3讀取一個二進制文件,一次4個字節,異或它與一個4個字節的長鍵
- 5. 是否有可能只打印一個字節的字符串?
- 6. C++與,或,非,異或關鍵字
- 7. 返回字節或傳遞一個數組的數組功能
- 8. 爲什麼兩個字節上的異或運算符產生一個int?
- 9. TypeError:POST數據應該是字節或可迭代的字節。它不能str
- 10. 索引或主鍵的總大小不能超過900個字節
- 11. SQL Server:索引或主鍵的總大小不能超過900個字節
- 12. 如何正確複製一個字節的可執行字節
- 13. AES解密的有效結果在一個字節和一個字節上有多少可能不同?
- 14. 我可以簡化嗎? (字節1位異或)
- 15. 檢測一個字節緩衝區包含int或只是一個字節[]
- 16. MySQL的 - 引用一個外鍵的多種可能的主鍵
- 17. 是否有可能獲得代理到一個字節數組?
- 18. 可捲曲只能讀取第一個2000字節?
- 19. C - 組合一個字節的三個字節與一個字節
- 20. 數組鍵是一個嵌入零字節的字符串嗎?
- 21. 什麼可能導致主鍵異常?
- 22. 異步NSURLConnection的接收空字節的每個字節
- 23. 如何異或兩個十六進制字符串,以便每個字節分別異或?
- 24. 不能鍵入「字節」轉換爲「T」
- 25. jQuery的:可能會或可能不會包含一個鏈接
- 26. 一個表的JPA複合鍵和另一個表的主鍵 - 可能嗎?
- 27. 節能另一個
- 28. 異常而從一個字節的緩衝區去一個字符串
- 29. Ruby:如何將一個可能的Unicode字符串分解爲字節
- 30. C++正確讀取unicode字符可能大於一個字節的文件
也許你的問題屬於密碼堆棧交換站點? – 2014-11-01 22:14:22
如果密鑰是一個字節,則可能的密鑰是一個字節的可能值:0,1,2,...,254,255。什麼是問題? – delnan 2014-11-01 22:22:30
這個問題似乎是無關緊要的,因爲它是關於密碼學的,而不涉及編程本身。 – 2014-11-02 15:32:03