fizbin

I'm just this guy, you know?

  • he/him

40-ish white guy in tech


I was going through old stuff on my laptop and found a program I'd written ages ago that I dusted off and reworked slightly, fed it a new wordlist (the reworking accidentally nuked my original wordlist, oops) and this is what it spit out. It's vaguely possible that someone will one day be websearching on one of these strings trying to find others like it.


Stanway-acloud
revolvingly admissable
self-mailer=agapetae
Freelandville=Airlie
unassailableness,Altair
zoophori,anagrams
sky-facer+Annabelle
Suzetta=annotators
RasureAnthonomus
preenrollArcturia
Alston-Arluene
dark-closed,attorns
awest,audiologist
forhooie=autotypography
heterocaryon+avails
redargued=axopetal
whityBaileyton
zeroeth-balderdashes
unductile,Barbaraanne
queaseBarcus
sloatbeachman
patronym,begluc
virginlybehoves
proctotome-beleapt
inwinding-bigeminal
uncharnel,BIM
characterologist+binits
Tarrytown+binman
sheeve=boers
drumwood boulderhead
ulnocondylar+brashy
muonbridely
Veneto=broad-toothed
redemptively=Brumalia
ecoclimate-Bumelia
underdoing-cableway
monodont,cachectical
distalia-cajole
Landess,capernoity
Aholla,carcinogenesis
prince-wood,carisoprodol
overstrain CCIR
Tomkin=chrismal
untimous=cyanean
subantiqueness+cyclostylar
serobiological=clairseach
contusive cloisterlike
serosas-codesigned
Basellaceae,colloquialism
polybutylene-combite
scintleconcatenation
octanaphthene,contraplex
hdwecounselled
LCSEN-counterjudging
Phrygianizecountersigns
Walach,coxcombess
rightly-crannequin
pledgee,creaming
mammotomycreophagy
suturally-Crocodilidae
osteopathy+cushion-shaped
forepost cut-work
montadale,Dagbamba
bushfire+decal
rematriculate=decorousness
braystone,deisms
cadmide=demasculinise
laccaic dephase
irreflectivelyderatted
EMT devilward
gynocardia,dog-tree
plumemaking,doozers
Pozsony,dumetose
Aile=Earlville
Pterelaus-earthquakes
own-rootedgeshot
revolving-elect.
twice-promised,electrograph
oblivionize-Elfie
tobogganist entreasuring
chrysalineeonian
aerolith-euripupi
electroanalytic exercisable
buckhound,exudative
weary-worn-facile
Bosporian-feeding
tetrapodies=Ferenc
Wburg-fibrotic
world-diminishing five-page
toxity fizzes
Alphonsa Flavobacterium
medula,floridean
snigsfoot-binding
Grignolino forehead's
peridesmitis-frillery
ascaron+gambler
lippings+Garvin
young-winged,gasometry
Welling+Gaud
Nollie glisky
endopolyploidy,goi
Cchaddie gospodipoda
TAG+Hand
paua+hardyhead
politer,headrent
acephalisthematolysis
xantho-herders
asmear-hyalomelan
achromatocyte-hipnesses
endopolyploidy-Hoi
unstorminess+holdman
quasi-devotedly+homilist
conduits+hominal
Kreindler+horrifying
arcsin,Hottentotism
muscologist=yea-sayer
Diyarbakir=impacter
paves-imperiling
Phronimidaeinalienable
oncet incurtain
destiny's-ineloquently
triweekliess,Ingaevones
arrogations-ingenit
Karry inhabitate
pronate-inhonest
severalth,inhonest
unsizableness-instituted
alpigene-Inter-imperial
breakably+intermarine
myoneural=involvement
pterobranchiate,irksomely
unreprovableness isolysin
Ibibio,JIS
stripings,jowar
asyzygetic,kairotic
stag-headedKamchatka
preassemble-kataphrenia
Balaenicipites kirbies
hellenists+knifelike
BRC Kniphofia
Inoperculata=leaf-lard
ghizite=lenticularis
froghood-Linyu
overvote=long-suffered
bowshot-Mannerist
octoploid-mathemeg
turned-onMcf
life-worthy+Meng
aphacic-Mesotaeniaceae
sizeable+metamere
spinomuscular+micronuclear
lanthanon+myotonus
substituted+navars
turned-onNEG
lagansnemertid
hummusneuraxis
favosely nonconstruable
untended nonfiduciaries
obliquities-noninterferingly
unpreposterousnessnonphonetic
apexes,nonradiative
ceroplastic-nosegay
Calla=numerics
vardapetNuriel
creashaks organzine
mahogoniesOrnithorhynchidae
holoparasiteOruntha
untransfused+ostomies
Verbesina=outblush
brouze,outsatisfy
four-horse=overproneness
colorablyoverpronounced
rencountering pachyderm
Carina+palaeichthyan
Orthoceran=Panderma
masticurous,Papua
casewood-pastoress
suicidical pennatisect
fast-fading,pepsinogen
temper-spoiling+perfervidness
Ptain=permanently
sphenopetrosal physicianless
skiffle-phlegmatous
indention,Pieris
antiscripturism-platinocyanide
Chronotron Platonically
ammonical+polytechnic
lognormally=ponceau
torpidness,Post-volstead
haeremai-pravity
hyperdeterminant-precedentary
antiministerially precommuning
docoglossan pre-entertain
Quilmes-preyingly
arcature,preinventories
desmography prememoranda
nonfeudal premodel
picturephones-pseudoceratitic
wheep purificatory
traditionary=pursuitmeter
Judon-putting-stone
quizmasters,reasonedly
radiocast=rebarbative
untenuousredshirted
transcrystalline,refuels
sharpitereincorporation
heart-sick+renovatingly
tamanduas,repiners
taproot's,restrike
undivined+rhaponticin
Tara-Rockwall
unhealthsomerolpens
misnames Roquefort
demulsify+roundoff
strackling,Salukis
pollinating sandboxes
Poplarism Satanophil
chronogrammic schtoff
upward-shooting,Seid
prosubmission+self-abasing
bisection,Selwyn
superarctic,semicallipygian
hardcover+seq
humify,Symplocaceae
rebreeding+singleheartedly
insignificancy=sleevelike
xanthopsydracia so-named
meditatively,spermatophore
podiatristsphericality
crashingly-sternnesses
credits=straight-lined
Dema subadvocate
postscribe,subinferring
swiper,subplacenta
much-hungersulfo
purchase superimpersonal
prejustifying+Svantovit
defroster,swanmote
raking+tachygraphometry
lean-necked=tame-spirited
corrugatestendentiousness
semivulcanizedterebration
belly-cheer thinghood
Camillusthirdings
Anschluss traction
cardiograms,trifocal
chut true-false
R-shapedturnip-yielding
pulpwood-uncoffined
rossite-ungored
Airlia unhallow
plumoseness unimpoisoned
parasiticalness,unpercolated
Carduelis+unpugnacious
pinman+unsoot
politico-scientific+unstecked
polariscopy urochloralic
smile-wreathed+valetudinary
subutopian+Viole
channelized-violist
tenners=Vitry
footstone vizored
Isidorean,wagonman
Periapis watchfree
tapper well-winded
glacier+Wendalyn
mommer-wisewoman
adipopectic=woodchucks
bequirtle zorillo
heed quilted alike
grope fibre baboon
burn grow ballot
table kneel begin
leave errant bellow
bull smoke bound
canto ruck cancer
quote pomp caudle
cipher cosset card
quote pomp caudle
rapine excess chisel
subtle peak conger
tester even course
tuft fence cross
rueful shade daze
long err dense
jerk nook envoy
win banana excel
bade suffer finite
whet thews fly
brevet girl foil
beacon value grape
hat send guild
rob omit hinder
fasten bundle humor
thirty dray map
harm castor margin
weeper waled meet
notch site musket
rill omit nine
pork mien refine
split saloon reply
ladder neat slap
canvas mad sot
mania abrade store
unfold eldest tuft
knead turn vetoes
desist owe visit
docket infect vista
stock inside wad
schist bray zeal
The program that generated that list in under 5 seconds
package com.github.fizbin.hashtest;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class FindTargetHash {
	public static int findIntInverse(int x) {
		// find the number y such that as an int (after overflow) x*y = 1
		// assumes x is odd, because without that it isn't possible.
		// works by computing x ** ((2 ** 32) - 1)
		int retval = 1;
		for (int i = 0; i < 31; i++) {
			retval *= retval;
			retval *= x;
		}
		return retval;
	}

	public static void findStrings(int targetHash, Iterable<String> firstParts,
			Iterable<String> midParts, Iterable<String> lastParts) {
		Map<Integer, String> firstHashes = new HashMap<>();
		for (String firstPart : firstParts) {
			firstHashes.put(firstPart.hashCode(), firstPart);
		}
		int maxlastlen = 0;
		int maxmidlen = 0;
		for (String midPart : midParts) {
			maxmidlen = Math.max(midPart.length(), maxmidlen);
		}
		for (String lastPart : lastParts) {
			maxlastlen = Math.max(lastPart.length(), maxlastlen);
		}
		List<Integer> hashmuls = new ArrayList<>();
		String baseStr = "\u0001";
		for (int i = 0; i <= maxmidlen + maxlastlen; i++) {
			hashmuls.add(baseStr.hashCode());
			baseStr += "\0";
		}
		// now change each hashmuls into its negative "reciprocal"
		for (int i = 0; i < hashmuls.size(); i++) {
			hashmuls.set(i, -findIntInverse(hashmuls.get(i)));
		}
		for (String lastPart : lastParts) {
			for (String midPart : midParts) {
				String tail = midPart + lastPart;
				Integer target = hashmuls.get(tail.length()) * (tail.hashCode() - targetHash);
				if (firstHashes.containsKey(target)) {
					System.out.print(firstHashes.get(target));
					System.out.println(tail);
				}
			}
		}
	}

	public static void main1() throws IOException {
		String resourceName = "/words.txt";
		InputStreamReader wordStream = new InputStreamReader(
				FindTargetHash.class.getResourceAsStream(resourceName), StandardCharsets.UTF_8);
		List<String> words = new BufferedReader(wordStream).lines().toList();
//		System.out.println("Using " + words.size() + " words.");
//		findStrings(Integer.MIN_VALUE, words, words.stream().map((n) -> " " + n + " ").toList(), words);
		findStrings(0, words, Arrays.asList(" ", "-", "+", "=", ",", ""), words);
	}
	public static void main2() throws IOException {
		String resourceName = "/doublet_words.txt";
		InputStreamReader wordStream = new InputStreamReader(
				FindTargetHash.class.getResourceAsStream(resourceName), StandardCharsets.UTF_8);
		List<String> words = new BufferedReader(wordStream).lines().toList();
//		System.out.println("Using " + words.size() + " words.");
		findStrings(0, words, words.stream().map((n) -> " " + n + " ").toList(), words);
	}
	public static void main(String[] args) throws IOException {
		main1();
		main2();
	}
}

words.txt is from https://github.com/dwyl/english-words and doublet_words.txt is from https://people.sc.fsu.edu/~jburkardt/datasets/words/words.html


You must log in to comment.