我需要找到一个密钥来解密用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