1530s spelling alteration (see wh-) of Middle English hore, from Old English hore "prostitute, harlot," from Proto-Germanic *hōran-, fem. *hōrā- (source also of Old Frisian hor "fornication," Old Norse hora "adulteress," Danish hore, Swedish hora, Dutch hoer, Old High German huora "prostitute;" in Gothic only in the masc. hors "adulterer, fornicator," also as a verb, horinon "commit adultery"), probably etymologically "one who desires," from PIE root *ka- "to like, desire," which in other languages has produced words for "lover; friend."
Whore itself is perhaps a Germanic euphemism for a word that has not survived. The Old English vowel naturally would have yielded *hoor, which is the pronunciation in some dialects; it might have shifted by influence of Middle English homonym hore "physical filth, slime," also "moral corruption, sin," from Old English horh. The wh- form became current 16c. A general term of abuse for an unchaste or lewd woman (without regard to money) from at least c. 1200. Of male prostitutes from 1630s. Whore of Babylon is from Revelation xvii.1, 5, etc. In Middle English with occasional plural forms horen, heoranna.
The word, with its derivatives, is now avoided polite speech; its survival in literature, so as it survives, is due to the fact that it is a favorite word with Shakspere (who uses it, with its derivatives, 99 times) and is common in the authorized English version of the Bible ... though the American revisers recommended the substitution of harlot as less gross .... [Century Dictionary]
Some equivalent words in other languages also derive from sources not originally pejorative, such as Bohemian nevestka, diminutive of nevesta "bride;" Dutch deern, German dirne originally "girl, lass, wench;" also perhaps Old French pute, perhaps literally "girl," fem. of Vulgar Latin *puttus (but perhaps rather from Latin putidus "stinking;" see poontang). Welsh putain "whore" is from French, probably via Middle English. Among other languages, Greek porne "prostitute" is related to pernemi "sell," with an original notion probably of a female slave sold for prostitution; Latin meretrix is literally "one who earns wages" (source of Irish mertrech, Old English miltestre "whore, prostitute").
The vulgar Roman word was scortum, literally "skin, hide." Another term was lupa, literally "she-wolf" (preserved in Spanish loba, Italian lupa, French louve; see wolf (n.)). And of course there was prostituta, literally "placed in front," thus "publicly exposed," from the fem. past participle of prostituere (see prostitute (n.)). Another Old Norse term was skækja, which yielded Danish skøge, Swedish sköka; probably from Middle Low German schoke, which is perhaps from schode "foreskin of a horse's penis," perhaps with the sense of "skin" (compare Latin scortum) or perhaps via an intermediary sense of "vagina." Spanish ramera, Portuguese rameira are from fem. form of ramero "young bird of prey," literally "little branch," from ramo "branch." Breton gast is cognate with Welsh gast "bitch," of uncertain origin. Compare also strumpet, harlot.
Old Church Slavonic ljubodejica is from ljuby dejati "fornicate," a compound from ljuby "love" + dejati "put, perform." Russian bljad "whore" derives from Old Church Slavonic bladinica, from bladu "fornication." Polish nierządnica is literally "disorderly woman." Sanskrit vecya is a derivation of veca- "house, dwelling," especially "house of ill-repute, brothel." Another term, pumccali, means literally "one who runs after men." Avestan jahika is literally "woman," but only of evil creatures; another term is kunairi, from pejorative prefix ku- + nairi "woman."