  Separating hash families are useful combinatorial structures which are
generalizations of many well-studied objects in combinatorics, cryptography and
coding theory. In this paper, using tools from graph theory and additive number
theory, we solve several open problems and conjectures concerning bounds and
constructions for separating hash families. Firstly, we discover that the
cardinality of a separating hash family satisfies a Johnson-type inequality. As
a result, we obtain a new upper bound, which is superior to all previous ones.
Secondly, we present a construction for an infinite class of perfect hash
families. It is based on the Hamming graphs in coding theory and generalizes
many constructions that appeared before. It provides an affirmative answer to
both Bazrafshan-Trung's open problem on separating hash families and
Alon-Stav's conjecture on parent-identifying codes. Thirdly, let $p_t(N,q)$
denote the maximal cardinality of a $t$-perfect hash family of length $N$ over
an alphabet of size $q$. Walker II and Colbourn conjectured that
$p_3(3,q)=o(q^2)$. We verify this conjecture by proving
$q^{2-o(1)}<p_3(3,q)=o(q^2)$. Our proof can be viewed as an application of
Ruzsa-Szemer{\'e}di's (6,3)-theorem. We also prove
$q^{2-o(1)}<p_4(4,q)=o(q^2)$. Two new notions in graph theory and additive
number theory, namely rainbow cycles and $R$-sum-free sets, are introduced to
prove this result. These two bounds support a question of Blackburn, Etzion,
Stinson and Zaverucha. Finally, we establish a bridge between perfect hash
families and hypergraph Tur{\'a}n problems. This connection has not been
noticed before. As a consequence, many new results and problems arise.
