Murphy, 23, has moved to the Welsh outfit for an undisclosed fee on a contract that will run until June 2022.
The attacker made over 108 appearances for the Canaries after coming through the youth system, and ended the 2017-18 campaign with 11 goals in 47 appearances in all competitions.
"Josh is a player I've watched for a number of years now and he's always excited me when he runs with the ball," Cardiff boss Neil Warnock told the club's official website.
"I think he's at the right age now with his best still to come. He can play an instrumental part in helping us to stay in the Premier League and I know he's looking forward to the challenge. He's been my number one target since the end of last season."
Cardiff are expected to be busy this summer following their promotion to the Premier League.