charSetLen = 95
keySpace (7+8) = 95^7 + 95^8 = 69833729609375 = 2^45.9889 ~ 2^46
euc = chainCount / (tableWorkFactor / 2 + 1)
tableWorkFactor = chainLen * chainCount / keySpace
chainLen = 200000
chainCount = 400000000
tableWorkFactor = 200000*400000000/95^7 = 1.1455782248419423404
euc = 400000000 / (1.1455782248419423404 / 2 + 1) = 254325260 = 0.63581315 * 400000000 (63.5813 %, 36.418685 % are duplicates)
So your reduction function is not as good as the old one, that rainbow crack used.
Their merge rate is 36.4 % and yours is 41.2 %.
I can't predict the final merge rate on different chain lengths (hence I can't give you configurations for perfect rainbow tables), maybe Sc00bz can come up with a formula for you, try and ask him.
It's important to have perfect rainbow tables, and all the math, because this way it's easier for me to give you exact numbers. When dealing with non-perfect tables, the formula (nonperfectTableSuccessRate ˜ 1 - product i = 1 to chainLen of 1 - euc(i) / keySpace) that predicts the success rate is hard to "reverse", in order to extract the chainLen.
If you know the expectedUnique chains, it's a hell of a lot easier ( perfectTableSuccessRate = 1 - (1 - expectedUniqueChains / keySpace) ^ chainLen ) to extract the chainLen from this formula.
Talk to
Sc00bz about this. Ask him to try to find out the formula that gives you the expectedUniqueChains, given your reduction function.