Python small brute-forcer
In general, you can use itertools.product to factor out nested loops, and tuple unpacking with * to neatly deal with multiple arguments:

from itertools import product

for keys in product(*Key):
    Decrypt(*keys)


A simple example:

&gt;&gt;&gt; from itertools import product
&gt;&gt;&gt; keys = ["ab", "cd", "ef", "gh"]
&gt;&gt;&gt; for k in product(*keys):
    print k


('a', 'c', 'e', 'g')
('a', 'c', 'e', 'h')
('a', 'c', 'f', 'g')
('a', 'c', 'f', 'h')
('a', 'd', 'e', 'g')
('a', 'd', 'e', 'h')
('a', 'd', 'f', 'g')
('a', 'd', 'f', 'h')
('b', 'c', 'e', 'g')
('b', 'c', 'e', 'h')
('b', 'c', 'f', 'g')
('b', 'c', 'f', 'h')
('b', 'd', 'e', 'g')
('b', 'd', 'e', 'h')
('b', 'd', 'f', 'g')
('b', 'd', 'f', 'h')


Note that for four sets of 20 keys, there would be 160,000 combinations (20 ** 4 == 160000).