⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 skeydictionary.java

📁 一个非常好的ssh客户端实现
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	"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"    };    public static String bitsToEnglish(byte[] bits, int offset) {        byte[] bits2 = new byte[9];        int p,i;        System.arraycopy(bits, 0, bits2, 0, 8);        /* compute parity */        for(p = 0,i = 0; i < 64; i += 2)	    p += extractBits(bits2, i, 2);        bits2[8] = (byte)(p << 6);	StringBuffer buf = new StringBuffer();	for(i = 0; i < 66; i += 11) {	    if(i > 0) {		buf.append(" ");	    }	    buf.append(dict[extractBits(bits2, i, 11)]);	}	return buf.toString();    }    public static byte[] englishToBits(String english) {	StringTokenizer st   = new StringTokenizer(english);	byte[]          bits = new byte[9];        int             i, p, v, l, low, high;	String          word;        for(i = 0, p = 0; i < 6; i++, p += 11) {	    if((word = st.nextToken()) == null)		return null;	    l = word.length();	    if(l > 4 || l < 1) {		return null;	    } else if(l < 4) {		low = 0;		high = 570;	    } else {		low = 571;		high = 2047;	    }	    // !!! standard(word);	    if((v = wsrch(word, low, high)) < 0)		return null;	    insertBits(bits, v, p, 11);        }        /* now check the parity of what we got */        for(p = 0, i = 0; i < 64; i +=2)	    p += extractBits(bits, i, 2);        if((p & 3) != extractBits(bits, 64, 2))	    return null;	byte[] out = new byte[8];        System.arraycopy(bits, 0, out, 0, 8);	return out;    }    static int extractBits(byte[] bits, int offset, int length) {        int l = 0, c = 0, r = 0, x, byteOff = offset / 8;        l = (bits[byteOff] & 0xff);	if(byteOff + 1 < bits.length) {	    c = (bits[byteOff + 1] & 0xff);	}	if(byteOff + 2 < bits.length) {	    r = (bits[byteOff + 2] & 0xff);	}        x = ((l << 8 | c) << 8  | r);        x = x >>> (24 - (length + (offset % 8)));        x = (x & (0xffff >>> (16 - length)));        return x;    }    static void insertBits(byte[] bits, int x, int offset, int length) {        int l, c, r, y, shift;        shift = ((8 - ((offset + length) & 0x07)) & 0x07);        y = x << shift;        l = (y >>> 16) & 0xff;        c = (y >>> 8) & 0xff;        r = y & 0xff;        if(shift + length > 16) {	    bits[offset / 8]     |= l;	    bits[offset / 8 + 1] |= c;	    bits[offset / 8 + 2] |= r;        } else if(shift +length > 8) {	    bits[offset / 8]     |= c;	    bits[offset / 8 + 1] |= r;        } else {	    bits[offset / 8] |= r;        }    }    /* Dictionary binary search */    private static int wsrch(String word, int low, int high) {        int i, j;	word = word.toUpperCase();        for(;;) {	    i = (low + high) / 2;	    if((j = word.compareTo(dict[i])) == 0) {		return i;       /* Found it */	    } else if(high == low + 1) {		/* Avoid effects of integer truncation in /2 */		if(word.equalsIgnoreCase(dict[high]))		    return high;		else		    return -1;	    } else if(low >= high) {		return -1;	    }	    /* I don't *think* this can happen...*/	    if(j < 0)		high = i;  /* Search lower half */	    else		low = i;   /* Search upper half */        }    }    /* !!! DEBUG    public static void main(String[] argv) {	String words1 = "RASH BUSH MILK LOOK BAD BRIM";	String words2 = "TROD MUTE TAIL WARM CHAR KONG";	byte[] bits1, bits2;	System.out.println("words1: ");	bits1 = SKEYDictionary.englishToBits(words1);	com.mindbright.util.HexDump.hexDump(bits1);	System.out.println("words2: ");	bits2 = SKEYDictionary.englishToBits(words2);	com.mindbright.util.HexDump.hexDump(bits2);	System.out.println(SKEYDictionary.bitsToEnglish(bits1, 0));	System.out.println(SKEYDictionary.bitsToEnglish(bits2, 0));    }    */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -