. #24769

pull uvhw wants to merge 38 commits into bitcoin:master from uvhw:bitcoin-vn changing 14 files +4665 −82
  1. uvhw commented at 10:15 AM on April 5, 2022: none

    <!-- *** Please remove the following help text before submitting: *** Pull requests without a rationale and clear improvement may be closed immediately. GUI-related pull requests should be opened against https://github.com/bitcoin-core/gui first. See CONTRIBUTING.md -->

    <!-- Please provide clear motivation for your patch and explain how it improves Bitcoin Core user experience or Bitcoin Core developer experience significantly: * Any test improvements or new tests that improve coverage are always welcome. * All other changes should have accompanying unit tests (see `src/test/`) or functional tests (see `test/`). Contributors should note which tests cover modified code. If no tests exist for a region of modified code, new tests should accompany the change. * Bug fixes are most welcome when they come with steps to reproduce or an explanation of the potential issue as well as reasoning for the way the bug was fixed. * Features are welcome, but might be rejected due to design or scope issues. If a feature is based on a lot of dependencies, contributors should first consider building the system outside of Bitcoin Core, if possible. * Refactoring changes are only accepted if they are required for a feature or bug fix or otherwise improve developer experience significantly. For example, most "code style" refactoring changes require a thorough explanation why they are useful, what downsides they have and why they *significantly* improve developer experience or avoid serious programming bugs. Note that code style is often a subjective matter. Unless they are explicitly mentioned to be preferred in the [developer notes](/doc/developer-notes.md), stylistic code changes are usually rejected. -->

    <!-- Bitcoin Core has a thorough review process and even the most trivial change needs to pass a lot of eyes and requires non-zero or even substantial time effort to review. There is a huge lack of active reviewers on the project, so patches often sit for a long time. -->

  2. Update README.md 6554e87dbe
  3. Update README.md 152f005951
  4. update
    add
    dca7baef35
  5. Update README.md 2302419360
  6. Tạo ios.yml
    bitcoin
    9b3b35c79c
  7. Merge branch 'bitcoin:master' into master 9e94fac4a9
  8. wallet.dat
    ~~~~I will sign important messages with this address: 1GwvLW9qJ8uaYjew3cFvPiqxViWhuU1pKT
    e1356fd360
  9. 1MQWh5QKMdPAsYkdkXtvgkS9qxQtHrnA3T
    send 15 bitcoin to account 1MQWh5QKMdPAsYkdkXtvgkS9qxQtHrnA3T
    05b1a1d516
  10. Create wallet 1f447b49a3
  11. Create 1MQWh5QKMdPAsYkdkXtvgkS9qxQtHrnA3T f8d4767466
  12. Create uvhw 2a00b5d94e
  13. bitcoin.exe b2b126eb26
  14. Update README.md ca84fcbbb2
  15. Create main.yml
    /*
        rfc1751.js : Converts between 128-bit strings and a human-readable
        sequence of words, as defined in RFC1751: "A Convention for
        Human-Readable 128-bit Keys", by Daniel L. McDonald.
        Ported from rfc1751.py / Python Cryptography Toolkit (public domain).
    */
    
    var rfc1751_wordlist = [ "A", "ABE", "ACE", "ACT", "AD", "ADA", "ADD",
       "AGO", "AID", "AIM", "AIR", "ALL", "ALP", "AM", "AMY", "AN", "ANA",
       "AND", "ANN", "ANT", "ANY", "APE", "APS", "APT", "ARC", "ARE", "ARK",
       "ARM", "ART", "AS", "ASH", "ASK", "AT", "ATE", "AUG", "AUK", "AVE",
       "AWE", "AWK", "AWL", "AWN", "AX", "AYE", "BAD", "BAG", "BAH", "BAM",
       "BAN", "BAR", "BAT", "BAY", "BE", "BED", "BEE", "BEG", "BEN", "BET",
       "BEY", "BIB", "BID", "BIG", "BIN", "BIT", "BOB", "BOG", "BON", "BOO",
       "BOP", "BOW", "BOY", "BUB", "BUD", "BUG", "BUM", "BUN", "BUS", "BUT",
       "BUY", "BY", "BYE", "CAB", "CAL", "CAM", "CAN", "CAP", "CAR", "CAT",
       "CAW", "COD", "COG", "COL", "CON", "COO", "COP", "COT", "COW", "COY",
       "CRY", "CUB", "CUE", "CUP", "CUR", "CUT", "DAB", "DAD", "DAM", "DAN",
       "DAR", "DAY", "DEE", "DEL", "DEN", "DES", "DEW", "DID", "DIE", "DIG",
       "DIN", "DIP", "DO", "DOE", "DOG", "DON", "DOT", "DOW", "DRY", "DUB",
       "DUD", "DUE", "DUG", "DUN", "EAR", "EAT", "ED", "EEL", "EGG", "EGO",
       "ELI", "ELK", "ELM", "ELY", "EM", "END", "EST", "ETC", "EVA", "EVE",
       "EWE", "EYE", "FAD", "FAN", "FAR", "FAT", "FAY", "FED", "FEE", "FEW",
       "FIB", "FIG", "FIN", "FIR", "FIT", "FLO", "FLY", "FOE", "FOG", "FOR",
       "FRY", "FUM", "FUN", "FUR", "GAB", "GAD", "GAG", "GAL", "GAM", "GAP",
       "GAS", "GAY", "GEE", "GEL", "GEM", "GET", "GIG", "GIL", "GIN", "GO",
       "GOT", "GUM", "GUN", "GUS", "GUT", "GUY", "GYM", "GYP", "HA", "HAD",
       "HAL", "HAM", "HAN", "HAP", "HAS", "HAT", "HAW", "HAY", "HE", "HEM",
       "HEN", "HER", "HEW", "HEY", "HI", "HID", "HIM", "HIP", "HIS", "HIT",
       "HO", "HOB", "HOC", "HOE", "HOG", "HOP", "HOT", "HOW", "HUB", "HUE",
       "HUG", "HUH", "HUM", "HUT", "I", "ICY", "IDA", "IF", "IKE", "ILL",
       "INK", "INN", "IO", "ION", "IQ", "IRA", "IRE", "IRK", "IS", "IT",
       "ITS", "IVY", "JAB", "JAG", "JAM", "JAN", "JAR", "JAW", "JAY", "JET",
       "JIG", "JIM", "JO", "JOB", "JOE", "JOG", "JOT", "JOY", "JUG", "JUT",
       "KAY", "KEG", "KEN", "KEY", "KID", "KIM", "KIN", "KIT", "LA", "LAB",
       "LAC", "LAD", "LAG", "LAM", "LAP", "LAW", "LAY", "LEA", "LED", "LEE",
       "LEG", "LEN", "LEO", "LET", "LEW", "LID", "LIE", "LIN", "LIP", "LIT",
       "LO", "LOB", "LOG", "LOP", "LOS", "LOT", "LOU", "LOW", "LOY", "LUG",
       "LYE", "MA", "MAC", "MAD", "MAE", "MAN", "MAO", "MAP", "MAT", "MAW",
       "MAY", "ME", "MEG", "MEL", "MEN", "MET", "MEW", "MID", "MIN", "MIT",
       "MOB", "MOD", "MOE", "MOO", "MOP", "MOS", "MOT", "MOW", "MUD", "MUG",
       "MUM", "MY", "NAB", "NAG", "NAN", "NAP", "NAT", "NAY", "NE", "NED",
       "NEE", "NET", "NEW", "NIB", "NIL", "NIP", "NIT", "NO", "NOB", "NOD",
       "NON", "NOR", "NOT", "NOV", "NOW", "NU", "NUN", "NUT", "O", "OAF",
       "OAK", "OAR", "OAT", "ODD", "ODE", "OF", "OFF", "OFT", "OH", "OIL",
       "OK", "OLD", "ON", "ONE", "OR", "ORB", "ORE", "ORR", "OS", "OTT",
       "OUR", "OUT", "OVA", "OW", "OWE", "OWL", "OWN", "OX", "PA", "PAD",
       "PAL", "PAM", "PAN", "PAP", "PAR", "PAT", "PAW", "PAY", "PEA", "PEG",
       "PEN", "PEP", "PER", "PET", "PEW", "PHI", "PI", "PIE", "PIN", "PIT",
       "PLY", "PO", "POD", "POE", "POP", "POT", "POW", "PRO", "PRY", "PUB",
       "PUG", "PUN", "PUP", "PUT", "QUO", "RAG", "RAM", "RAN", "RAP", "RAT",
       "RAW", "RAY", "REB", "RED", "REP", "RET", "RIB", "RID", "RIG", "RIM",
       "RIO", "RIP", "ROB", "ROD", "ROE", "RON", "ROT", "ROW", "ROY", "RUB",
       "RUE", "RUG", "RUM", "RUN", "RYE", "SAC", "SAD", "SAG", "SAL", "SAM",
       "SAN", "SAP", "SAT", "SAW", "SAY", "SEA", "SEC", "SEE", "SEN", "SET",
       "SEW", "SHE", "SHY", "SIN", "SIP", "SIR", "SIS", "SIT", "SKI", "SKY",
       "SLY", "SO", "SOB", "SOD", "SON", "SOP", "SOW", "SOY", "SPA", "SPY",
       "SUB", "SUD", "SUE", "SUM", "SUN", "SUP", "TAB", "TAD", "TAG", "TAN",
       "TAP", "TAR", "TEA", "TED", "TEE", "TEN", "THE", "THY", "TIC", "TIE",
       "TIM", "TIN", "TIP", "TO", "TOE", "TOG", "TOM", "TON", "TOO", "TOP",
       "TOW", "TOY", "TRY", "TUB", "TUG", "TUM", "TUN", "TWO", "UN", "UP",
       "US", "USE", "VAN", "VAT", "VET", "VIE", "WAD", "WAG", "WAR", "WAS",
       "WAY", "WE", "WEB", "WED", "WEE", "WET", "WHO", "WHY", "WIN", "WIT",
       "WOK", "WON", "WOO", "WOW", "WRY", "WU", "YAM", "YAP", "YAW", "YE",
       "YEA", "YES", "YET", "YOU", "ABED", "ABEL", "ABET", "ABLE", "ABUT",
       "ACHE", "ACID", "ACME", "ACRE", "ACTA", "ACTS", "ADAM", "ADDS",
       "ADEN", "AFAR", "AFRO", "AGEE", "AHEM", "AHOY", "AIDA", "AIDE",
       "AIDS", "AIRY", "AJAR", "AKIN", "ALAN", "ALEC", "ALGA", "ALIA",
       "ALLY", "ALMA", "ALOE", "ALSO", "ALTO", "ALUM", "ALVA", "AMEN",
       "AMES", "AMID", "AMMO", "AMOK", "AMOS", "AMRA", "ANDY", "ANEW",
       "ANNA", "ANNE", "ANTE", "ANTI", "AQUA", "ARAB", "ARCH", "AREA",
       "ARGO", "ARID", "ARMY", "ARTS", "ARTY", "ASIA", "ASKS", "ATOM",
       "AUNT", "AURA", "AUTO", "AVER", "AVID", "AVIS", "AVON", "AVOW",
       "AWAY", "AWRY", "BABE", "BABY", "BACH", "BACK", "BADE", "BAIL",
       "BAIT", "BAKE", "BALD", "BALE", "BALI", "BALK", "BALL", "BALM",
       "BAND", "BANE", "BANG", "BANK", "BARB", "BARD", "BARE", "BARK",
       "BARN", "BARR", "BASE", "BASH", "BASK", "BASS", "BATE", "BATH",
       "BAWD", "BAWL", "BEAD", "BEAK", "BEAM", "BEAN", "BEAR", "BEAT",
       "BEAU", "BECK", "BEEF", "BEEN", "BEER",
       "BEET", "BELA", "BELL", "BELT", "BEND", "BENT", "BERG", "BERN",
       "BERT", "BESS", "BEST", "BETA", "BETH", "BHOY", "BIAS", "BIDE",
       "BIEN", "BILE", "BILK", "BILL", "BIND", "BING", "BIRD", "BITE",
       "BITS", "BLAB", "BLAT", "BLED", "BLEW", "BLOB", "BLOC", "BLOT",
       "BLOW", "BLUE", "BLUM", "BLUR", "BOAR", "BOAT", "BOCA", "BOCK",
       "BODE", "BODY", "BOGY", "BOHR", "BOIL", "BOLD", "BOLO", "BOLT",
       "BOMB", "BONA", "BOND", "BONE", "BONG", "BONN", "BONY", "BOOK",
       "BOOM", "BOON", "BOOT", "BORE", "BORG", "BORN", "BOSE", "BOSS",
       "BOTH", "BOUT", "BOWL", "BOYD", "BRAD", "BRAE", "BRAG", "BRAN",
       "BRAY", "BRED", "BREW", "BRIG", "BRIM", "BROW", "BUCK", "BUDD",
       "BUFF", "BULB", "BULK", "BULL", "BUNK", "BUNT", "BUOY", "BURG",
       "BURL", "BURN", "BURR", "BURT", "BURY", "BUSH", "BUSS", "BUST",
       "BUSY", "BYTE", "CADY", "CAFE", "CAGE", "CAIN", "CAKE", "CALF",
       "CALL", "CALM", "CAME", "CANE", "CANT", "CARD", "CARE", "CARL",
       "CARR", "CART", "CASE", "CASH", "CASK", "CAST", "CAVE", "CEIL",
       "CELL", "CENT", "CERN", "CHAD", "CHAR", "CHAT", "CHAW", "CHEF",
       "CHEN", "CHEW", "CHIC", "CHIN", "CHOU", "CHOW", "CHUB", "CHUG",
       "CHUM", "CITE", "CITY", "CLAD", "CLAM", "CLAN", "CLAW", "CLAY",
       "CLOD", "CLOG", "CLOT", "CLUB", "CLUE", "COAL", "COAT", "COCA",
       "COCK", "COCO", "CODA", "CODE", "CODY", "COED", "COIL", "COIN",
       "COKE", "COLA", "COLD", "COLT", "COMA", "COMB", "COME", "COOK",
       "COOL", "COON", "COOT", "CORD", "CORE", "CORK", "CORN", "COST",
       "COVE", "COWL", "CRAB", "CRAG", "CRAM", "CRAY", "CREW", "CRIB",
       "CROW", "CRUD", "CUBA", "CUBE", "CUFF", "CULL", "CULT", "CUNY",
       "CURB", "CURD", "CURE", "CURL", "CURT", "CUTS", "DADE", "DALE",
       "DAME", "DANA", "DANE", "DANG", "DANK", "DARE", "DARK", "DARN",
       "DART", "DASH", "DATA", "DATE", "DAVE", "DAVY", "DAWN", "DAYS",
       "DEAD", "DEAF", "DEAL", "DEAN", "DEAR", "DEBT", "DECK", "DEED",
       "DEEM", "DEER", "DEFT", "DEFY", "DELL", "DENT", "DENY", "DESK",
       "DIAL", "DICE", "DIED", "DIET", "DIME", "DINE", "DING", "DINT",
       "DIRE", "DIRT", "DISC", "DISH", "DISK", "DIVE", "DOCK", "DOES",
       "DOLE", "DOLL", "DOLT", "DOME", "DONE", "DOOM", "DOOR", "DORA",
       "DOSE", "DOTE", "DOUG", "DOUR", "DOVE", "DOWN", "DRAB", "DRAG",
       "DRAM", "DRAW", "DREW", "DRUB", "DRUG", "DRUM", "DUAL", "DUCK",
       "DUCT", "DUEL", "DUET", "DUKE", "DULL", "DUMB", "DUNE", "DUNK",
       "DUSK", "DUST", "DUTY", "EACH", "EARL", "EARN", "EASE", "EAST",
       "EASY", "EBEN", "ECHO", "EDDY", "EDEN", "EDGE", "EDGY", "EDIT",
       "EDNA", "EGAN", "ELAN", "ELBA", "ELLA", "ELSE", "EMIL", "EMIT",
       "EMMA", "ENDS", "ERIC", "EROS", "EVEN", "EVER", "EVIL", "EYED",
       "FACE", "FACT", "FADE", "FAIL", "FAIN", "FAIR", "FAKE", "FALL",
       "FAME", "FANG", "FARM", "FAST", "FATE", "FAWN", "FEAR", "FEAT",
       "FEED", "FEEL", "FEET", "FELL", "FELT", "FEND", "FERN", "FEST",
       "FEUD", "FIEF", "FIGS", "FILE", "FILL", "FILM", "FIND", "FINE",
       "FINK", "FIRE", "FIRM", "FISH", "FISK", "FIST", "FITS", "FIVE",
       "FLAG", "FLAK", "FLAM", "FLAT", "FLAW", "FLEA", "FLED", "FLEW",
       "FLIT", "FLOC", "FLOG", "FLOW", "FLUB", "FLUE", "FOAL", "FOAM",
       "FOGY", "FOIL", "FOLD", "FOLK", "FOND", "FONT", "FOOD", "FOOL",
       "FOOT", "FORD", "FORE", "FORK", "FORM", "FORT", "FOSS", "FOUL",
       "FOUR", "FOWL", "FRAU", "FRAY", "FRED", "FREE", "FRET", "FREY",
       "FROG", "FROM", "FUEL", "FULL", "FUME", "FUND", "FUNK", "FURY",
       "FUSE", "FUSS", "GAFF", "GAGE", "GAIL", "GAIN", "GAIT", "GALA",
       "GALE", "GALL", "GALT", "GAME", "GANG", "GARB", "GARY", "GASH",
       "GATE", "GAUL", "GAUR", "GAVE", "GAWK", "GEAR", "GELD", "GENE",
       "GENT", "GERM", "GETS", "GIBE", "GIFT", "GILD", "GILL", "GILT",
       "GINA", "GIRD", "GIRL", "GIST", "GIVE", "GLAD", "GLEE", "GLEN",
       "GLIB", "GLOB", "GLOM", "GLOW", "GLUE", "GLUM", "GLUT", "GOAD",
       "GOAL", "GOAT", "GOER", "GOES", "GOLD", "GOLF", "GONE", "GONG",
       "GOOD", "GOOF", "GORE", "GORY", "GOSH", "GOUT", "GOWN", "GRAB",
       "GRAD", "GRAY", "GREG", "GREW", "GREY", "GRID", "GRIM", "GRIN",
       "GRIT", "GROW", "GRUB", "GULF", "GULL", "GUNK", "GURU", "GUSH",
       "GUST", "GWEN", "GWYN", "HAAG", "HAAS", "HACK", "HAIL", "HAIR",
       "HALE", "HALF", "HALL", "HALO", "HALT", "HAND", "HANG", "HANK",
       "HANS", "HARD", "HARK", "HARM", "HART", "HASH", "HAST", "HATE",
       "HATH", "HAUL", "HAVE", "HAWK", "HAYS", "HEAD", "HEAL", "HEAR",
       "HEAT", "HEBE", "HECK", "HEED", "HEEL", "HEFT", "HELD", "HELL",
       "HELM", "HERB", "HERD", "HERE", "HERO", "HERS", "HESS", "HEWN",
       "HICK", "HIDE", "HIGH", "HIKE", "HILL", "HILT", "HIND", "HINT",
       "HIRE", "HISS", "HIVE", "HOBO", "HOCK", "HOFF", "HOLD", "HOLE",
       "HOLM", "HOLT", "HOME", "HONE", "HONK", "HOOD", "HOOF", "HOOK",
       "HOOT", "HORN", "HOSE", "HOST", "HOUR", "HOVE", "HOWE", "HOWL",
       "HOYT", "HUCK", "HUED", "HUFF", "HUGE", "HUGH", "HUGO", "HULK",
       "HULL", "HUNK", "HUNT", "HURD", "HURL", "HURT", "HUSH", "HYDE",
       "HYMN", "IBIS", "ICON", "IDEA", "IDLE", "IFFY", "INCA", "INCH",
       "INTO", "IONS", "IOTA", "IOWA", "IRIS", "IRMA", "IRON", "ISLE",
       "ITCH", "ITEM", "IVAN", "JACK", "JADE", "JAIL", "JAKE", "JANE",
       "JAVA", "JEAN", "JEFF", "JERK", "JESS", "JEST", "JIBE", "JILL",
       "JILT", "JIVE", "JOAN", "JOBS", "JOCK", "JOEL", "JOEY", "JOHN",
       "JOIN", "JOKE", "JOLT", "JOVE", "JUDD", "JUDE", "JUDO", "JUDY",
       "JUJU", "JUKE", "JULY", "JUNE", "JUNK", "JUNO", "JURY", "JUST",
       "JUTE", "KAHN", "KALE", "KANE", "KANT", "KARL", "KATE", "KEEL",
       "KEEN", "KENO", "KENT", "KERN", "KERR", "KEYS", "KICK", "KILL",
       "KIND", "KING", "KIRK", "KISS", "KITE", "KLAN", "KNEE", "KNEW",
       "KNIT", "KNOB", "KNOT", "KNOW", "KOCH", "KONG", "KUDO", "KURD",
       "KURT", "KYLE", "LACE", "LACK", "LACY", "LADY", "LAID", "LAIN",
       "LAIR", "LAKE", "LAMB", "LAME", "LAND", "LANE", "LANG", "LARD",
       "LARK", "LASS", "LAST", "LATE", "LAUD", "LAVA", "LAWN", "LAWS",
       "LAYS", "LEAD", "LEAF", "LEAK", "LEAN", "LEAR", "LEEK", "LEER",
       "LEFT", "LEND", "LENS", "LENT", "LEON", "LESK", "LESS", "LEST",
       "LETS", "LIAR", "LICE", "LICK", "LIED", "LIEN", "LIES", "LIEU",
       "LIFE", "LIFT", "LIKE", "LILA", "LILT", "LILY", "LIMA", "LIMB",
       "LIME", "LIND", "LINE", "LINK", "LINT", "LION", "LISA", "LIST",
       "LIVE", "LOAD", "LOAF", "LOAM", "LOAN", "LOCK", "LOFT", "LOGE",
       "LOIS", "LOLA", "LONE", "LONG", "LOOK", "LOON", "LOOT", "LORD",
       "LORE", "LOSE", "LOSS", "LOST", "LOUD", "LOVE", "LOWE", "LUCK",
       "LUCY", "LUGE", "LUKE", "LULU", "LUND", "LUNG", "LURA", "LURE",
       "LURK", "LUSH", "LUST", "LYLE", "LYNN", "LYON", "LYRA", "MACE",
       "MADE", "MAGI", "MAID", "MAIL", "MAIN", "MAKE", "MALE", "MALI",
       "MALL", "MALT", "MANA", "MANN", "MANY", "MARC", "MARE", "MARK",
       "MARS", "MART", "MARY", "MASH", "MASK", "MASS", "MAST", "MATE",
       "MATH", "MAUL", "MAYO", "MEAD", "MEAL", "MEAN", "MEAT", "MEEK",
       "MEET", "MELD", "MELT", "MEMO", "MEND", "MENU", "MERT", "MESH",
       "MESS", "MICE", "MIKE", "MILD", "MILE", "MILK", "MILL", "MILT",
       "MIMI", "MIND", "MINE", "MINI", "MINK", "MINT", "MIRE", "MISS",
       "MIST", "MITE", "MITT", "MOAN", "MOAT", "MOCK", "MODE", "MOLD",
       "MOLE", "MOLL", "MOLT", "MONA", "MONK", "MONT", "MOOD", "MOON",
       "MOOR", "MOOT", "MORE", "MORN", "MORT", "MOSS", "MOST", "MOTH",
       "MOVE", "MUCH", "MUCK", "MUDD", "MUFF", "MULE", "MULL", "MURK",
       "MUSH", "MUST", "MUTE", "MUTT", "MYRA", "MYTH", "NAGY", "NAIL",
       "NAIR", "NAME", "NARY", "NASH", "NAVE", "NAVY", "NEAL", "NEAR",
       "NEAT", "NECK", "NEED", "NEIL", "NELL", "NEON", "NERO", "NESS",
       "NEST", "NEWS", "NEWT", "NIBS", "NICE", "NICK", "NILE", "NINA",
       "NINE", "NOAH", "NODE", "NOEL", "NOLL", "NONE", "NOOK", "NOON",
       "NORM", "NOSE", "NOTE", "NOUN", "NOVA", "NUDE", "NULL", "NUMB",
       "OATH", "OBEY", "OBOE", "ODIN", "OHIO", "OILY", "OINT", "OKAY",
       "OLAF", "OLDY", "OLGA", "OLIN", "OMAN", "OMEN", "OMIT", "ONCE",
       "ONES", "ONLY", "ONTO", "ONUS", "ORAL", "ORGY", "OSLO", "OTIS",
       "OTTO", "OUCH", "OUST", "OUTS", "OVAL", "OVEN", "OVER", "OWLY",
       "OWNS", "QUAD", "QUIT", "QUOD", "RACE", "RACK", "RACY", "RAFT",
       "RAGE", "RAID", "RAIL", "RAIN", "RAKE", "RANK", "RANT", "RARE",
       "RASH", "RATE", "RAVE", "RAYS", "READ", "REAL", "REAM", "REAR",
       "RECK", "REED", "REEF", "REEK", "REEL", "REID", "REIN", "RENA",
       "REND", "RENT", "REST", "RICE", "RICH", "RICK", "RIDE", "RIFT",
       "RILL", "RIME", "RING", "RINK", "RISE", "RISK", "RITE", "ROAD",
       "ROAM", "ROAR", "ROBE", "ROCK", "RODE", "ROIL", "ROLL", "ROME",
       "ROOD", "ROOF", "ROOK", "ROOM", "ROOT", "ROSA", "ROSE", "ROSS",
       "ROSY", "ROTH", "ROUT", "ROVE", "ROWE", "ROWS", "RUBE", "RUBY",
       "RUDE", "RUDY", "RUIN", "RULE", "RUNG", "RUNS", "RUNT", "RUSE",
       "RUSH", "RUSK", "RUSS", "RUST", "RUTH", "SACK", "SAFE", "SAGE",
       "SAID", "SAIL", "SALE", "SALK", "SALT", "SAME", "SAND", "SANE",
       "SANG", "SANK", "SARA", "SAUL", "SAVE", "SAYS", "SCAN", "SCAR",
       "SCAT", "SCOT", "SEAL", "SEAM", "SEAR", "SEAT", "SEED", "SEEK",
       "SEEM", "SEEN", "SEES", "SELF", "SELL", "SEND", "SENT", "SETS",
       "SEWN", "SHAG", "SHAM", "SHAW", "SHAY", "SHED", "SHIM", "SHIN",
       "SHOD", "SHOE", "SHOT", "SHOW", "SHUN", "SHUT", "SICK", "SIDE",
       "SIFT", "SIGH", "SIGN", "SILK", "SILL", "SILO", "SILT", "SINE",
       "SING", "SINK", "SIRE", "SITE", "SITS", "SITU", "SKAT", "SKEW",
       "SKID", "SKIM", "SKIN", "SKIT", "SLAB", "SLAM", "SLAT", "SLAY",
       "SLED", "SLEW", "SLID", "SLIM", "SLIT", "SLOB", "SLOG", "SLOT",
       "SLOW", "SLUG", "SLUM", "SLUR", "SMOG", "SMUG", "SNAG", "SNOB",
       "SNOW", "SNUB", "SNUG", "SOAK", "SOAR", "SOCK", "SODA", "SOFA",
       "SOFT", "SOIL", "SOLD", "SOME", "SONG", "SOON", "SOOT", "SORE",
       "SORT", "SOUL", "SOUR", "SOWN", "STAB", "STAG", "STAN", "STAR",
       "STAY", "STEM", "STEW", "STIR", "STOW", "STUB", "STUN", "SUCH",
       "SUDS", "SUIT", "SULK", "SUMS", "SUNG", "SUNK", "SURE", "SURF",
       "SWAB", "SWAG", "SWAM", "SWAN", "SWAT", "SWAY", "SWIM", "SWUM",
       "TACK", "TACT", "TAIL", "TAKE", "TALE", "TALK", "TALL", "TANK",
       "TASK", "TATE", "TAUT", "TEAL", "TEAM", "TEAR", "TECH", "TEEM",
       "TEEN", "TEET", "TELL", "TEND", "TENT", "TERM", "TERN", "TESS",
       "TEST", "THAN", "THAT", "THEE", "THEM", "THEN", "THEY", "THIN",
       "THIS", "THUD", "THUG", "TICK", "TIDE", "TIDY", "TIED", "TIER",
       "TILE", "TILL", "TILT", "TIME", "TINA", "TINE", "TINT", "TINY",
       "TIRE", "TOAD", "TOGO", "TOIL", "TOLD", "TOLL", "TONE", "TONG",
       "TONY", "TOOK", "TOOL", "TOOT", "TORE", "TORN", "TOTE", "TOUR",
       "TOUT", "TOWN", "TRAG", "TRAM", "TRAY", "TREE", "TREK", "TRIG",
       "TRIM", "TRIO", "TROD", "TROT", "TROY", "TRUE", "TUBA", "TUBE",
       "TUCK", "TUFT", "TUNA", "TUNE", "TUNG", "TURF", "TURN", "TUSK",
       "TWIG", "TWIN", "TWIT", "ULAN", "UNIT", "URGE", "USED", "USER",
       "USES", "UTAH", "VAIL", "VAIN", "VALE", "VARY", "VASE", "VAST",
       "VEAL", "VEDA", "VEIL", "VEIN", "VEND", "VENT", "VERB", "VERY",
       "VETO", "VICE", "VIEW", "VINE", "VISE", "VOID", "VOLT", "VOTE",
       "WACK", "WADE", "WAGE", "WAIL", "WAIT", "WAKE", "WALE", "WALK",
       "WALL", "WALT", "WAND", "WANE", "WANG", "WANT", "WARD", "WARM",
       "WARN", "WART", "WASH", "WAST", "WATS", "WATT", "WAVE", "WAVY",
       "WAYS", "WEAK", "WEAL", "WEAN", "WEAR", "WEED", "WEEK", "WEIR",
       "WELD", "WELL", "WELT", "WENT", "WERE", "WERT", "WEST", "WHAM",
       "WHAT", "WHEE", "WHEN", "WHET", "WHOA", "WHOM", "WICK", "WIFE",
       "WILD", "WILL", "WIND", "WINE", "WING", "WINK", "WINO", "WIRE",
       "WISE", "WISH", "WITH", "WOLF", "WONT", "WOOD", "WOOL", "WORD",
       "WORE", "WORK", "WORM", "WORN", "WOVE", "WRIT", "WYNN", "YALE",
       "YANG", "YANK", "YARD", "YARN", "YAWL", "YAWN", "YEAH", "YEAR",
       "YELL", "YOGA", "YOKE" ];
    
    var binary = ['0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111', 
                  '1000', '1001', '1010', '1011', '1100', '1101', '1110', '1111'];
    
    function _key2bin(key) {
        res = ''
        for (var i = 0; i < key.length; i++) {
            res += binary[key[i] >> 4] + binary [key[i] & 0x0f];
        }
        return res;
    }
    
    function _extract(key, start, length) {
        k = key.substring(start, start+length);
        var acc = 0;
        for (var i = 0; i < k.length; i++) {
            acc = acc * 2 + k.charCodeAt(i) - 48;
        }
        return acc;
    }
    
    function key_to_english(key) {
    
        //pad to 8 bytes
        var padding = [];
        for (var i = 0; i < (8 - (key.length % 8)) % 8; i++) {
            padding.push(0);
        }
        key = padding.concat(key);
    
        var english = [];
        for (var index = 0; index < key.length; index += 8) {
            var subkey = key.slice(index, index + 8);
    
            //add parity
            var skbin = _key2bin(subkey);
            var p = 0;
            for (var i = 0; i < 64; i += 2) {
                p = p + _extract(skbin, i, 2);
            }
            subkey.push((p << 6) & 0xff);
    
            skbin = _key2bin(subkey);
            for (var i = 0; i < 64; i += 11) {
                english.push(rfc1751_wordlist[_extract(skbin, i, 11)]);
            }
        }
        return english.join(' ');
    }
    
    function english_to_key(str) {
    
        var L = str.split(' ');
        var key = [];
    
        for (var index = 0; index < L.length; index += 6) {
            var sublist = L.slice(index, index + 6);
            var bits = 0;
            var ch = [0,0,0,0,0,0,0,0,0];
            for (var k = 0; k < sublist.length; k++) {
                var word = sublist[k];
                var idx = rfc1751_wordlist.indexOf(word);
                var shift = (8 - (bits + 11) % 8) % 8;
                var y = idx << shift;
                var cl = y >> 16;
                var cc = (y >> 8) & 0xff;
                var cr = y & 0xff;
                var t = Math.floor(bits / 8);
                if (shift > 5) {
                    ch[t] = ch[t] | cl;
                    ch[t+1] = ch[t+1] | cc;
                    ch[t+2] = ch[t+2] | cr;
                } else if (shift > -3) {
                    ch[t] = ch[t] | cc;
                    ch[t+1] = ch[t+1] | cr;
                } else { 
                    ch[t] = ch[t] | cr;
                }
                bits = bits + 11;
            }
            var subkey = ch.slice();
    
            //check parity
            var skbin = _key2bin(subkey);
            var p = 0;
            for (var i = 0; i < 64; i += 2) {
                p = p + _extract(skbin, i, 2);
            }
            var cs0 = _extract(skbin, 64, 2);
            var cs1 = p & 3;
            if (cs0 != cs1) {
                throw new Error("Parity error at " + word);
            }
    
            key = key.concat( subkey.slice(0,8) );
        }
        return key;
    }
    9354f60be6
  16. uvhw
    /*
        rfc1751.js : Converts between 128-bit strings and a human-readable
        sequence of words, as defined in RFC1751: "A Convention for
        Human-Readable 128-bit Keys", by Daniel L. McDonald.
        Ported from rfc1751.py / Python Cryptography Toolkit (public domain).
    */
    
    var rfc1751_wordlist = [ "A", "ABE", "ACE", "ACT", "AD", "ADA", "ADD",
       "AGO", "AID", "AIM", "AIR", "ALL", "ALP", "AM", "AMY", "AN", "ANA",
       "AND", "ANN", "ANT", "ANY", "APE", "APS", "APT", "ARC", "ARE", "ARK",
       "ARM", "ART", "AS", "ASH", "ASK", "AT", "ATE", "AUG", "AUK", "AVE",
       "AWE", "AWK", "AWL", "AWN", "AX", "AYE", "BAD", "BAG", "BAH", "BAM",
       "BAN", "BAR", "BAT", "BAY", "BE", "BED", "BEE", "BEG", "BEN", "BET",
       "BEY", "BIB", "BID", "BIG", "BIN", "BIT", "BOB", "BOG", "BON", "BOO",
       "BOP", "BOW", "BOY", "BUB", "BUD", "BUG", "BUM", "BUN", "BUS", "BUT",
       "BUY", "BY", "BYE", "CAB", "CAL", "CAM", "CAN", "CAP", "CAR", "CAT",
       "CAW", "COD", "COG", "COL", "CON", "COO", "COP", "COT", "COW", "COY",
       "CRY", "CUB", "CUE", "CUP", "CUR", "CUT", "DAB", "DAD", "DAM", "DAN",
       "DAR", "DAY", "DEE", "DEL", "DEN", "DES", "DEW", "DID", "DIE", "DIG",
       "DIN", "DIP", "DO", "DOE", "DOG", "DON", "DOT", "DOW", "DRY", "DUB",
       "DUD", "DUE", "DUG", "DUN", "EAR", "EAT", "ED", "EEL", "EGG", "EGO",
       "ELI", "ELK", "ELM", "ELY", "EM", "END", "EST", "ETC", "EVA", "EVE",
       "EWE", "EYE", "FAD", "FAN", "FAR", "FAT", "FAY", "FED", "FEE", "FEW",
       "FIB", "FIG", "FIN", "FIR", "FIT", "FLO", "FLY", "FOE", "FOG", "FOR",
       "FRY", "FUM", "FUN", "FUR", "GAB", "GAD", "GAG", "GAL", "GAM", "GAP",
       "GAS", "GAY", "GEE", "GEL", "GEM", "GET", "GIG", "GIL", "GIN", "GO",
       "GOT", "GUM", "GUN", "GUS", "GUT", "GUY", "GYM", "GYP", "HA", "HAD",
       "HAL", "HAM", "HAN", "HAP", "HAS", "HAT", "HAW", "HAY", "HE", "HEM",
       "HEN", "HER", "HEW", "HEY", "HI", "HID", "HIM", "HIP", "HIS", "HIT",
       "HO", "HOB", "HOC", "HOE", "HOG", "HOP", "HOT", "HOW", "HUB", "HUE",
       "HUG", "HUH", "HUM", "HUT", "I", "ICY", "IDA", "IF", "IKE", "ILL",
       "INK", "INN", "IO", "ION", "IQ", "IRA", "IRE", "IRK", "IS", "IT",
       "ITS", "IVY", "JAB", "JAG", "JAM", "JAN", "JAR", "JAW", "JAY", "JET",
       "JIG", "JIM", "JO", "JOB", "JOE", "JOG", "JOT", "JOY", "JUG", "JUT",
       "KAY", "KEG", "KEN", "KEY", "KID", "KIM", "KIN", "KIT", "LA", "LAB",
       "LAC", "LAD", "LAG", "LAM", "LAP", "LAW", "LAY", "LEA", "LED", "LEE",
       "LEG", "LEN", "LEO", "LET", "LEW", "LID", "LIE", "LIN", "LIP", "LIT",
       "LO", "LOB", "LOG", "LOP", "LOS", "LOT", "LOU", "LOW", "LOY", "LUG",
       "LYE", "MA", "MAC", "MAD", "MAE", "MAN", "MAO", "MAP", "MAT", "MAW",
       "MAY", "ME", "MEG", "MEL", "MEN", "MET", "MEW", "MID", "MIN", "MIT",
       "MOB", "MOD", "MOE", "MOO", "MOP", "MOS", "MOT", "MOW", "MUD", "MUG",
       "MUM", "MY", "NAB", "NAG", "NAN", "NAP", "NAT", "NAY", "NE", "NED",
       "NEE", "NET", "NEW", "NIB", "NIL", "NIP", "NIT", "NO", "NOB", "NOD",
       "NON", "NOR", "NOT", "NOV", "NOW", "NU", "NUN", "NUT", "O", "OAF",
       "OAK", "OAR", "OAT", "ODD", "ODE", "OF", "OFF", "OFT", "OH", "OIL",
       "OK", "OLD", "ON", "ONE", "OR", "ORB", "ORE", "ORR", "OS", "OTT",
       "OUR", "OUT", "OVA", "OW", "OWE", "OWL", "OWN", "OX", "PA", "PAD",
       "PAL", "PAM", "PAN", "PAP", "PAR", "PAT", "PAW", "PAY", "PEA", "PEG",
       "PEN", "PEP", "PER", "PET", "PEW", "PHI", "PI", "PIE", "PIN", "PIT",
       "PLY", "PO", "POD", "POE", "POP", "POT", "POW", "PRO", "PRY", "PUB",
       "PUG", "PUN", "PUP", "PUT", "QUO", "RAG", "RAM", "RAN", "RAP", "RAT",
       "RAW", "RAY", "REB", "RED", "REP", "RET", "RIB", "RID", "RIG", "RIM",
       "RIO", "RIP", "ROB", "ROD", "ROE", "RON", "ROT", "ROW", "ROY", "RUB",
       "RUE", "RUG", "RUM", "RUN", "RYE", "SAC", "SAD", "SAG", "SAL", "SAM",
       "SAN", "SAP", "SAT", "SAW", "SAY", "SEA", "SEC", "SEE", "SEN", "SET",
       "SEW", "SHE", "SHY", "SIN", "SIP", "SIR", "SIS", "SIT", "SKI", "SKY",
       "SLY", "SO", "SOB", "SOD", "SON", "SOP", "SOW", "SOY", "SPA", "SPY",
       "SUB", "SUD", "SUE", "SUM", "SUN", "SUP", "TAB", "TAD", "TAG", "TAN",
       "TAP", "TAR", "TEA", "TED", "TEE", "TEN", "THE", "THY", "TIC", "TIE",
       "TIM", "TIN", "TIP", "TO", "TOE", "TOG", "TOM", "TON", "TOO", "TOP",
       "TOW", "TOY", "TRY", "TUB", "TUG", "TUM", "TUN", "TWO", "UN", "UP",
       "US", "USE", "VAN", "VAT", "VET", "VIE", "WAD", "WAG", "WAR", "WAS",
       "WAY", "WE", "WEB", "WED", "WEE", "WET", "WHO", "WHY", "WIN", "WIT",
       "WOK", "WON", "WOO", "WOW", "WRY", "WU", "YAM", "YAP", "YAW", "YE",
       "YEA", "YES", "YET", "YOU", "ABED", "ABEL", "ABET", "ABLE", "ABUT",
       "ACHE", "ACID", "ACME", "ACRE", "ACTA", "ACTS", "ADAM", "ADDS",
       "ADEN", "AFAR", "AFRO", "AGEE", "AHEM", "AHOY", "AIDA", "AIDE",
       "AIDS", "AIRY", "AJAR", "AKIN", "ALAN", "ALEC", "ALGA", "ALIA",
       "ALLY", "ALMA", "ALOE", "ALSO", "ALTO", "ALUM", "ALVA", "AMEN",
       "AMES", "AMID", "AMMO", "AMOK", "AMOS", "AMRA", "ANDY", "ANEW",
       "ANNA", "ANNE", "ANTE", "ANTI", "AQUA", "ARAB", "ARCH", "AREA",
       "ARGO", "ARID", "ARMY", "ARTS", "ARTY", "ASIA", "ASKS", "ATOM",
       "AUNT", "AURA", "AUTO", "AVER", "AVID", "AVIS", "AVON", "AVOW",
       "AWAY", "AWRY", "BABE", "BABY", "BACH", "BACK", "BADE", "BAIL",
       "BAIT", "BAKE", "BALD", "BALE", "BALI", "BALK", "BALL", "BALM",
       "BAND", "BANE", "BANG", "BANK", "BARB", "BARD", "BARE", "BARK",
       "BARN", "BARR", "BASE", "BASH", "BASK", "BASS", "BATE", "BATH",
       "BAWD", "BAWL", "BEAD", "BEAK", "BEAM", "BEAN", "BEAR", "BEAT",
       "BEAU", "BECK", "BEEF", "BEEN", "BEER",
       "BEET", "BELA", "BELL", "BELT", "BEND", "BENT", "BERG", "BERN",
       "BERT", "BESS", "BEST", "BETA", "BETH", "BHOY", "BIAS", "BIDE",
       "BIEN", "BILE", "BILK", "BILL", "BIND", "BING", "BIRD", "BITE",
       "BITS", "BLAB", "BLAT", "BLED", "BLEW", "BLOB", "BLOC", "BLOT",
       "BLOW", "BLUE", "BLUM", "BLUR", "BOAR", "BOAT", "BOCA", "BOCK",
       "BODE", "BODY", "BOGY", "BOHR", "BOIL", "BOLD", "BOLO", "BOLT",
       "BOMB", "BONA", "BOND", "BONE", "BONG", "BONN", "BONY", "BOOK",
       "BOOM", "BOON", "BOOT", "BORE", "BORG", "BORN", "BOSE", "BOSS",
       "BOTH", "BOUT", "BOWL", "BOYD", "BRAD", "BRAE", "BRAG", "BRAN",
       "BRAY", "BRED", "BREW", "BRIG", "BRIM", "BROW", "BUCK", "BUDD",
       "BUFF", "BULB", "BULK", "BULL", "BUNK", "BUNT", "BUOY", "BURG",
       "BURL", "BURN", "BURR", "BURT", "BURY", "BUSH", "BUSS", "BUST",
       "BUSY", "BYTE", "CADY", "CAFE", "CAGE", "CAIN", "CAKE", "CALF",
       "CALL", "CALM", "CAME", "CANE", "CANT", "CARD", "CARE", "CARL",
       "CARR", "CART", "CASE", "CASH", "CASK", "CAST", "CAVE", "CEIL",
       "CELL", "CENT", "CERN", "CHAD", "CHAR", "CHAT", "CHAW", "CHEF",
       "CHEN", "CHEW", "CHIC", "CHIN", "CHOU", "CHOW", "CHUB", "CHUG",
       "CHUM", "CITE", "CITY", "CLAD", "CLAM", "CLAN", "CLAW", "CLAY",
       "CLOD", "CLOG", "CLOT", "CLUB", "CLUE", "COAL", "COAT", "COCA",
       "COCK", "COCO", "CODA", "CODE", "CODY", "COED", "COIL", "COIN",
       "COKE", "COLA", "COLD", "COLT", "COMA", "COMB", "COME", "COOK",
       "COOL", "COON", "COOT", "CORD", "CORE", "CORK", "CORN", "COST",
       "COVE", "COWL", "CRAB", "CRAG", "CRAM", "CRAY", "CREW", "CRIB",
       "CROW", "CRUD", "CUBA", "CUBE", "CUFF", "CULL", "CULT", "CUNY",
       "CURB", "CURD", "CURE", "CURL", "CURT", "CUTS", "DADE", "DALE",
       "DAME", "DANA", "DANE", "DANG", "DANK", "DARE", "DARK", "DARN",
       "DART", "DASH", "DATA", "DATE", "DAVE", "DAVY", "DAWN", "DAYS",
       "DEAD", "DEAF", "DEAL", "DEAN", "DEAR", "DEBT", "DECK", "DEED",
       "DEEM", "DEER", "DEFT", "DEFY", "DELL", "DENT", "DENY", "DESK",
       "DIAL", "DICE", "DIED", "DIET", "DIME", "DINE", "DING", "DINT",
       "DIRE", "DIRT", "DISC", "DISH", "DISK", "DIVE", "DOCK", "DOES",
       "DOLE", "DOLL", "DOLT", "DOME", "DONE", "DOOM", "DOOR", "DORA",
       "DOSE", "DOTE", "DOUG", "DOUR", "DOVE", "DOWN", "DRAB", "DRAG",
       "DRAM", "DRAW", "DREW", "DRUB", "DRUG", "DRUM", "DUAL", "DUCK",
       "DUCT", "DUEL", "DUET", "DUKE", "DULL", "DUMB", "DUNE", "DUNK",
       "DUSK", "DUST", "DUTY", "EACH", "EARL", "EARN", "EASE", "EAST",
       "EASY", "EBEN", "ECHO", "EDDY", "EDEN", "EDGE", "EDGY", "EDIT",
       "EDNA", "EGAN", "ELAN", "ELBA", "ELLA", "ELSE", "EMIL", "EMIT",
       "EMMA", "ENDS", "ERIC", "EROS", "EVEN", "EVER", "EVIL", "EYED",
       "FACE", "FACT", "FADE", "FAIL", "FAIN", "FAIR", "FAKE", "FALL",
       "FAME", "FANG", "FARM", "FAST", "FATE", "FAWN", "FEAR", "FEAT",
       "FEED", "FEEL", "FEET", "FELL", "FELT", "FEND", "FERN", "FEST",
       "FEUD", "FIEF", "FIGS", "FILE", "FILL", "FILM", "FIND", "FINE",
       "FINK", "FIRE", "FIRM", "FISH", "FISK", "FIST", "FITS", "FIVE",
       "FLAG", "FLAK", "FLAM", "FLAT", "FLAW", "FLEA", "FLED", "FLEW",
       "FLIT", "FLOC", "FLOG", "FLOW", "FLUB", "FLUE", "FOAL", "FOAM",
       "FOGY", "FOIL", "FOLD", "FOLK", "FOND", "FONT", "FOOD", "FOOL",
       "FOOT", "FORD", "FORE", "FORK", "FORM", "FORT", "FOSS", "FOUL",
       "FOUR", "FOWL", "FRAU", "FRAY", "FRED", "FREE", "FRET", "FREY",
       "FROG", "FROM", "FUEL", "FULL", "FUME", "FUND", "FUNK", "FURY",
       "FUSE", "FUSS", "GAFF", "GAGE", "GAIL", "GAIN", "GAIT", "GALA",
       "GALE", "GALL", "GALT", "GAME", "GANG", "GARB", "GARY", "GASH",
       "GATE", "GAUL", "GAUR", "GAVE", "GAWK", "GEAR", "GELD", "GENE",
       "GENT", "GERM", "GETS", "GIBE", "GIFT", "GILD", "GILL", "GILT",
       "GINA", "GIRD", "GIRL", "GIST", "GIVE", "GLAD", "GLEE", "GLEN",
       "GLIB", "GLOB", "GLOM", "GLOW", "GLUE", "GLUM", "GLUT", "GOAD",
       "GOAL", "GOAT", "GOER", "GOES", "GOLD", "GOLF", "GONE", "GONG",
       "GOOD", "GOOF", "GORE", "GORY", "GOSH", "GOUT", "GOWN", "GRAB",
       "GRAD", "GRAY", "GREG", "GREW", "GREY", "GRID", "GRIM", "GRIN",
       "GRIT", "GROW", "GRUB", "GULF", "GULL", "GUNK", "GURU", "GUSH",
       "GUST", "GWEN", "GWYN", "HAAG", "HAAS", "HACK", "HAIL", "HAIR",
       "HALE", "HALF", "HALL", "HALO", "HALT", "HAND", "HANG", "HANK",
       "HANS", "HARD", "HARK", "HARM", "HART", "HASH", "HAST", "HATE",
       "HATH", "HAUL", "HAVE", "HAWK", "HAYS", "HEAD", "HEAL", "HEAR",
       "HEAT", "HEBE", "HECK", "HEED", "HEEL", "HEFT", "HELD", "HELL",
       "HELM", "HERB", "HERD", "HERE", "HERO", "HERS", "HESS", "HEWN",
       "HICK", "HIDE", "HIGH", "HIKE", "HILL", "HILT", "HIND", "HINT",
       "HIRE", "HISS", "HIVE", "HOBO", "HOCK", "HOFF", "HOLD", "HOLE",
       "HOLM", "HOLT", "HOME", "HONE", "HONK", "HOOD", "HOOF", "HOOK",
       "HOOT", "HORN", "HOSE", "HOST", "HOUR", "HOVE", "HOWE", "HOWL",
       "HOYT", "HUCK", "HUED", "HUFF", "HUGE", "HUGH", "HUGO", "HULK",
       "HULL", "HUNK", "HUNT", "HURD", "HURL", "HURT", "HUSH", "HYDE",
       "HYMN", "IBIS", "ICON", "IDEA", "IDLE", "IFFY", "INCA", "INCH",
       "INTO", "IONS", "IOTA", "IOWA", "IRIS", "IRMA", "IRON", "ISLE",
       "ITCH", "ITEM", "IVAN", "JACK", "JADE", "JAIL", "JAKE", "JANE",
       "JAVA", "JEAN", "JEFF", "JERK", "JESS", "JEST", "JIBE", "JILL",
       "JILT", "JIVE", "JOAN", "JOBS", "JOCK", "JOEL", "JOEY", "JOHN",
       "JOIN", "JOKE", "JOLT", "JOVE", "JUDD", "JUDE", "JUDO", "JUDY",
       "JUJU", "JUKE", "JULY", "JUNE", "JUNK", "JUNO", "JURY", "JUST",
       "JUTE", "KAHN", "KALE", "KANE", "KANT", "KARL", "KATE", "KEEL",
       "KEEN", "KENO", "KENT", "KERN", "KERR", "KEYS", "KICK", "KILL",
       "KIND", "KING", "KIRK", "KISS", "KITE", "KLAN", "KNEE", "KNEW",
       "KNIT", "KNOB", "KNOT", "KNOW", "KOCH", "KONG", "KUDO", "KURD",
       "KURT", "KYLE", "LACE", "LACK", "LACY", "LADY", "LAID", "LAIN",
       "LAIR", "LAKE", "LAMB", "LAME", "LAND", "LANE", "LANG", "LARD",
       "LARK", "LASS", "LAST", "LATE", "LAUD", "LAVA", "LAWN", "LAWS",
       "LAYS", "LEAD", "LEAF", "LEAK", "LEAN", "LEAR", "LEEK", "LEER",
       "LEFT", "LEND", "LENS", "LENT", "LEON", "LESK", "LESS", "LEST",
       "LETS", "LIAR", "LICE", "LICK", "LIED", "LIEN", "LIES", "LIEU",
       "LIFE", "LIFT", "LIKE", "LILA", "LILT", "LILY", "LIMA", "LIMB",
       "LIME", "LIND", "LINE", "LINK", "LINT", "LION", "LISA", "LIST",
       "LIVE", "LOAD", "LOAF", "LOAM", "LOAN", "LOCK", "LOFT", "LOGE",
       "LOIS", "LOLA", "LONE", "LONG", "LOOK", "LOON", "LOOT", "LORD",
       "LORE", "LOSE", "LOSS", "LOST", "LOUD", "LOVE", "LOWE", "LUCK",
       "LUCY", "LUGE", "LUKE", "LULU", "LUND", "LUNG", "LURA", "LURE",
       "LURK", "LUSH", "LUST", "LYLE", "LYNN", "LYON", "LYRA", "MACE",
       "MADE", "MAGI", "MAID", "MAIL", "MAIN", "MAKE", "MALE", "MALI",
       "MALL", "MALT", "MANA", "MANN", "MANY", "MARC", "MARE", "MARK",
       "MARS", "MART", "MARY", "MASH", "MASK", "MASS", "MAST", "MATE",
       "MATH", "MAUL", "MAYO", "MEAD", "MEAL", "MEAN", "MEAT", "MEEK",
       "MEET", "MELD", "MELT", "MEMO", "MEND", "MENU", "MERT", "MESH",
       "MESS", "MICE", "MIKE", "MILD", "MILE", "MILK", "MILL", "MILT",
       "MIMI", "MIND", "MINE", "MINI", "MINK", "MINT", "MIRE", "MISS",
       "MIST", "MITE", "MITT", "MOAN", "MOAT", "MOCK", "MODE", "MOLD",
       "MOLE", "MOLL", "MOLT", "MONA", "MONK", "MONT", "MOOD", "MOON",
       "MOOR", "MOOT", "MORE", "MORN", "MORT", "MOSS", "MOST", "MOTH",
       "MOVE", "MUCH", "MUCK", "MUDD", "MUFF", "MULE", "MULL", "MURK",
       "MUSH", "MUST", "MUTE", "MUTT", "MYRA", "MYTH", "NAGY", "NAIL",
       "NAIR", "NAME", "NARY", "NASH", "NAVE", "NAVY", "NEAL", "NEAR",
       "NEAT", "NECK", "NEED", "NEIL", "NELL", "NEON", "NERO", "NESS",
       "NEST", "NEWS", "NEWT", "NIBS", "NICE", "NICK", "NILE", "NINA",
       "NINE", "NOAH", "NODE", "NOEL", "NOLL", "NONE", "NOOK", "NOON",
       "NORM", "NOSE", "NOTE", "NOUN", "NOVA", "NUDE", "NULL", "NUMB",
       "OATH", "OBEY", "OBOE", "ODIN", "OHIO", "OILY", "OINT", "OKAY",
       "OLAF", "OLDY", "OLGA", "OLIN", "OMAN", "OMEN", "OMIT", "ONCE",
       "ONES", "ONLY", "ONTO", "ONUS", "ORAL", "ORGY", "OSLO", "OTIS",
       "OTTO", "OUCH", "OUST", "OUTS", "OVAL", "OVEN", "OVER", "OWLY",
       "OWNS", "QUAD", "QUIT", "QUOD", "RACE", "RACK", "RACY", "RAFT",
       "RAGE", "RAID", "RAIL", "RAIN", "RAKE", "RANK", "RANT", "RARE",
       "RASH", "RATE", "RAVE", "RAYS", "READ", "REAL", "REAM", "REAR",
       "RECK", "REED", "REEF", "REEK", "REEL", "REID", "REIN", "RENA",
       "REND", "RENT", "REST", "RICE", "RICH", "RICK", "RIDE", "RIFT",
       "RILL", "RIME", "RING", "RINK", "RISE", "RISK", "RITE", "ROAD",
       "ROAM", "ROAR", "ROBE", "ROCK", "RODE", "ROIL", "ROLL", "ROME",
       "ROOD", "ROOF", "ROOK", "ROOM", "ROOT", "ROSA", "ROSE", "ROSS",
       "ROSY", "ROTH", "ROUT", "ROVE", "ROWE", "ROWS", "RUBE", "RUBY",
       "RUDE", "RUDY", "RUIN", "RULE", "RUNG", "RUNS", "RUNT", "RUSE",
       "RUSH", "RUSK", "RUSS", "RUST", "RUTH", "SACK", "SAFE", "SAGE",
       "SAID", "SAIL", "SALE", "SALK", "SALT", "SAME", "SAND", "SANE",
       "SANG", "SANK", "SARA", "SAUL", "SAVE", "SAYS", "SCAN", "SCAR",
       "SCAT", "SCOT", "SEAL", "SEAM", "SEAR", "SEAT", "SEED", "SEEK",
       "SEEM", "SEEN", "SEES", "SELF", "SELL", "SEND", "SENT", "SETS",
       "SEWN", "SHAG", "SHAM", "SHAW", "SHAY", "SHED", "SHIM", "SHIN",
       "SHOD", "SHOE", "SHOT", "SHOW", "SHUN", "SHUT", "SICK", "SIDE",
       "SIFT", "SIGH", "SIGN", "SILK", "SILL", "SILO", "SILT", "SINE",
       "SING", "SINK", "SIRE", "SITE", "SITS", "SITU", "SKAT", "SKEW",
       "SKID", "SKIM", "SKIN", "SKIT", "SLAB", "SLAM", "SLAT", "SLAY",
       "SLED", "SLEW", "SLID", "SLIM", "SLIT", "SLOB", "SLOG", "SLOT",
       "SLOW", "SLUG", "SLUM", "SLUR", "SMOG", "SMUG", "SNAG", "SNOB",
       "SNOW", "SNUB", "SNUG", "SOAK", "SOAR", "SOCK", "SODA", "SOFA",
       "SOFT", "SOIL", "SOLD", "SOME", "SONG", "SOON", "SOOT", "SORE",
       "SORT", "SOUL", "SOUR", "SOWN", "STAB", "STAG", "STAN", "STAR",
       "STAY", "STEM", "STEW", "STIR", "STOW", "STUB", "STUN", "SUCH",
       "SUDS", "SUIT", "SULK", "SUMS", "SUNG", "SUNK", "SURE", "SURF",
       "SWAB", "SWAG", "SWAM", "SWAN", "SWAT", "SWAY", "SWIM", "SWUM",
       "TACK", "TACT", "TAIL", "TAKE", "TALE", "TALK", "TALL", "TANK",
       "TASK", "TATE", "TAUT", "TEAL", "TEAM", "TEAR", "TECH", "TEEM",
       "TEEN", "TEET", "TELL", "TEND", "TENT", "TERM", "TERN", "TESS",
       "TEST", "THAN", "THAT", "THEE", "THEM", "THEN", "THEY", "THIN",
       "THIS", "THUD", "THUG", "TICK", "TIDE", "TIDY", "TIED", "TIER",
       "TILE", "TILL", "TILT", "TIME", "TINA", "TINE", "TINT", "TINY",
       "TIRE", "TOAD", "TOGO", "TOIL", "TOLD", "TOLL", "TONE", "TONG",
       "TONY", "TOOK", "TOOL", "TOOT", "TORE", "TORN", "TOTE", "TOUR",
       "TOUT", "TOWN", "TRAG", "TRAM", "TRAY", "TREE", "TREK", "TRIG",
       "TRIM", "TRIO", "TROD", "TROT", "TROY", "TRUE", "TUBA", "TUBE",
       "TUCK", "TUFT", "TUNA", "TUNE", "TUNG", "TURF", "TURN", "TUSK",
       "TWIG", "TWIN", "TWIT", "ULAN", "UNIT", "URGE", "USED", "USER",
       "USES", "UTAH", "VAIL", "VAIN", "VALE", "VARY", "VASE", "VAST",
       "VEAL", "VEDA", "VEIL", "VEIN", "VEND", "VENT", "VERB", "VERY",
       "VETO", "VICE", "VIEW", "VINE", "VISE", "VOID", "VOLT", "VOTE",
       "WACK", "WADE", "WAGE", "WAIL", "WAIT", "WAKE", "WALE", "WALK",
       "WALL", "WALT", "WAND", "WANE", "WANG", "WANT", "WARD", "WARM",
       "WARN", "WART", "WASH", "WAST", "WATS", "WATT", "WAVE", "WAVY",
       "WAYS", "WEAK", "WEAL", "WEAN", "WEAR", "WEED", "WEEK", "WEIR",
       "WELD", "WELL", "WELT", "WENT", "WERE", "WERT", "WEST", "WHAM",
       "WHAT", "WHEE", "WHEN", "WHET", "WHOA", "WHOM", "WICK", "WIFE",
       "WILD", "WILL", "WIND", "WINE", "WING", "WINK", "WINO", "WIRE",
       "WISE", "WISH", "WITH", "WOLF", "WONT", "WOOD", "WOOL", "WORD",
       "WORE", "WORK", "WORM", "WORN", "WOVE", "WRIT", "WYNN", "YALE",
       "YANG", "YANK", "YARD", "YARN", "YAWL", "YAWN", "YEAH", "YEAR",
       "YELL", "YOGA", "YOKE" ];
    
    var binary = ['0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111', 
                  '1000', '1001', '1010', '1011', '1100', '1101', '1110', '1111'];
    
    function _key2bin(key) {
        res = ''
        for (var i = 0; i < key.length; i++) {
            res += binary[key[i] >> 4] + binary [key[i] & 0x0f];
        }
        return res;
    }
    
    function _extract(key, start, length) {
        k = key.substring(start, start+length);
        var acc = 0;
        for (var i = 0; i < k.length; i++) {
            acc = acc * 2 + k.charCodeAt(i) - 48;
        }
        return acc;
    }
    
    function key_to_english(key) {
    
        //pad to 8 bytes
        var padding = [];
        for (var i = 0; i < (8 - (key.length % 8)) % 8; i++) {
            padding.push(0);
        }
        key = padding.concat(key);
    
        var english = [];
        for (var index = 0; index < key.length; index += 8) {
            var subkey = key.slice(index, index + 8);
    
            //add parity
            var skbin = _key2bin(subkey);
            var p = 0;
            for (var i = 0; i < 64; i += 2) {
                p = p + _extract(skbin, i, 2);
            }
            subkey.push((p << 6) & 0xff);
    
            skbin = _key2bin(subkey);
            for (var i = 0; i < 64; i += 11) {
                english.push(rfc1751_wordlist[_extract(skbin, i, 11)]);
            }
        }
        return english.join(' ');
    }
    
    function english_to_key(str) {
    
        var L = str.split(' ');
        var key = [];
    
        for (var index = 0; index < L.length; index += 6) {
            var sublist = L.slice(index, index + 6);
            var bits = 0;
            var ch = [0,0,0,0,0,0,0,0,0];
            for (var k = 0; k < sublist.length; k++) {
                var word = sublist[k];
                var idx = rfc1751_wordlist.indexOf(word);
                var shift = (8 - (bits + 11) % 8) % 8;
                var y = idx << shift;
                var cl = y >> 16;
                var cc = (y >> 8) & 0xff;
                var cr = y & 0xff;
                var t = Math.floor(bits / 8);
                if (shift > 5) {
                    ch[t] = ch[t] | cl;
                    ch[t+1] = ch[t+1] | cc;
                    ch[t+2] = ch[t+2] | cr;
                } else if (shift > -3) {
                    ch[t] = ch[t] | cc;
                    ch[t+1] = ch[t+1] | cr;
                } else { 
                    ch[t] = ch[t] | cr;
                }
                bits = bits + 11;
            }
            var subkey = ch.slice();
    
            //check parity
            var skbin = _key2bin(subkey);
            var p = 0;
            for (var i = 0; i < 64; i += 2) {
                p = p + _extract(skbin, i, 2);
            }
            var cs0 = _extract(skbin, 64, 2);
            var cs1 = p & 3;
            if (cs0 != cs1) {
                throw new Error("Parity error at " + word);
            }
    
            key = key.concat( subkey.slice(0,8) );
        }
        return key;
    }
    1a51a7b6e0
  17. Delete bitcoin-qt.pro a7fca12b46
  18. Rename ios.yml to ci.yml
     import hashlib
       2 
       3 # for compatibility with following code...
       4 class SHA256:
       5         new = hashlib.sha256
       6 
       7 ### BEGIN: Copied from https://bitcointalk.org/index.php?topic=1026.0 (public domain)
       8 __b58chars = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
       9 __b58base = len(__b58chars)
      10 
      11 def b58encode(v):
      12   """ encode v, which is a string of bytes, to base58.
      13   """
      14 
      15   long_value = 0L
      16   for (i, c) in enumerate(v[::-1]):
      17     long_value += (256**i) * ord(c)
      18 
      19   result = ''
      20   while long_value >= __b58base:
      21     div, mod = divmod(long_value, __b58base)
      22     result = __b58chars[mod] + result
      23     long_value = div
      24   result = __b58chars[long_value] + result
      25 
      26   # Bitcoin does a little leading-zero-compression:
      27   # leading 0-bytes in the input become leading-1s
      28   nPad = 0
      29   for c in v:
      30     if c == '\0': nPad += 1
      31     else: break
      32 
      33   return (__b58chars[0]*nPad) + result
      34 
      35 def b58decode(v, length):
      36   """ decode v into a string of len bytes
      37   """
      38   long_value = 0L
      39   for (i, c) in enumerate(v[::-1]):
      40     long_value += __b58chars.find(c) * (__b58base**i)
      41 
      42   result = ''
      43   while long_value >= 256:
      44     div, mod = divmod(long_value, 256)
      45     result = chr(mod) + result
      46     long_value = div
      47   result = chr(long_value) + result
      48 
      49   nPad = 0
      50   for c in v:
      51     if c == __b58chars[0]: nPad += 1
      52     else: break
      53 
      54   result = chr(0)*nPad + result
      55   if length is not None and len(result) != length:
      56     return None
      57 
      58   return result
      59 
      60 def get_bcaddress_version(strAddress):
      61   """ Returns None if strAddress is invalid.  Otherwise returns integer version of address. """
      62   addr = b58decode(strAddress,25)
      63   if addr is None: return None
      64   version = addr[0]
      65   checksum = addr[-4:]
      66   vh160 = addr[:-4] # Version plus hash160 is what is checksummed                                                                                                    
      67   h3=SHA256.new(SHA256.new(vh160).digest()).digest()
      68   if h3[0:4] == checksum:
      69     return ord(version)
      70   return None
      71 ###   END: Copied from https://bitcointalk.org/index.php?topic=1026.0 (public domain)
    556db04938
  19. Update ci.yml 10cf679ba1
  20. Delete ci.yml c58d93c1a8
  21. Merge branch 'bitcoin:master' into master c53adffc03
  22. Create c-cpp.yml 1434d0c0fd
  23. Create codeql-analysis.yml 6a9aaa2833
  24. Create 1GwvLW9qJ8uaYjew3cFvPiqxViWhuU1pKT 2eee716075
  25. Create get_chaininfo.md 595dfad01e
  26. Merge branch 'bitcoin:master' into master 43d8aead2b
  27. Create bitcoin-wallet.vcxproj 592b1b7ee9
  28. Update and rename 1MQWh5QKMdPAsYkdkXtvgkS9qxQtHrnA3T to bitcoin-wallet/wallet/assets/bip39-wordlist.txt fc70922a91
  29. Merge branch 'bitcoin:master' into master a0b28bdafa
  30. Create codeql-analysis.cpp 4014a22b42
  31. Merge branch 'bitcoin:master' into master b12789144d
  32. Create msvc-analysis.yml
    https://uvhw.github.io/bitcoin/
    276b2edea9
  33. https://uvhw.github.io/bitcoin/ 74357890a0
  34. Merge branch 'master' into bitcoin-vn afc2aa249c
  35. Merge pull request #1 #2 .. #19.. #150520 from bitcoin/master
    Conflicts:
    	src/bitcoinrpc.cpp
    fd3456419f
  36. Merge branch 'bitcoin:master' into bitcoin-vn d8fed0458e
  37. Merge branch 'bitcoin:master' into bitcoin-vn ef2d87aff6
  38. Merge branch 'bitcoin:master' into bitcoin-vn 30d79ee357
  39. Update README.md 7a37d6fcb4
  40. fanquake closed this on Apr 5, 2022

  41. fanquake locked this on Apr 5, 2022
  42. fanquake renamed this:
    Bitcoin vn
    .
    on Apr 5, 2022
Contributors

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-05-02 18:13 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me