This answer on purpose is more complicated than necessary. My goal is to apply a general property of regular and context-free languages, see: Prove that the equal-length concatenation of regular languages is context free.
Given regular languages $A$ and $B$, then $A@B=\{xy\mid x\in A, y\in B \text{ and } |x|=|y|\}$ is context free.
The solution is to generate $A$ with a right-linear grammar, and to generate $B$, this time backwards, with a left-linear grammar. Then the two derivations can be synchronized, which ensures the equal length requirement.
The new grammar is in fact linear, a subclass of the context-free grammars.
In this example we choose the following two grammars for $A =a^*b^*$ and $B = c^*d^*$, with axioms $S$ and $X$ respectively.
$S \to \varepsilon \mid aS \mid bT$, $T\to \varepsilon \mid bT$
$X \to \varepsilon \mid Xd \mid Yc$, $Y\to \varepsilon \mid Yc$
Synchronize the two grammars, using pairs of nonterminals (which form a new alphabet of nonterminals). For each of the sides we apply its possible productions from the original right/left linear grammar.
$\langle SX \rangle \to \varepsilon \mid
a\langle SX\rangle d \mid a \langle SY\rangle c\mid
b\langle TX\rangle d \mid b \langle TY\rangle c$
$\langle SY \rangle \to \varepsilon \mid a\langle SY\rangle c \mid b \langle TY\rangle c$
$\langle TX \rangle \to \varepsilon \mid b\langle TX\rangle d \mid b \langle TY\rangle c$
$\langle TY \rangle \to \varepsilon \mid b\langle TY\rangle c$
Renaming the four nonterminals into $S,P,Q,R$ we obtain a more familiar solution.
$S \to \varepsilon \mid
aS d \mid a P c\mid
bQ d \mid b R c$
$P \to \varepsilon \mid aP c \mid b R c$
$Q \to \varepsilon \mid bQ d \mid b R c$
$R \to \varepsilon \mid bR c$