1、JSDES 一种java的加解密方法

private int[] des_createKeys(String beinetkey) {
int[] pc2bytes0 = {0, 0x4, 0x20000000, 0x20000004, 0x10000, 0x10004, 0x20010000, 0x20010004, 0x200, 0x204, 0x20000200, 0x20000204, 0x10200, 0x10204, 0x20010200, 0x20010204};
int[] pc2bytes1 = {0, 0x1, 0x100000, 0x100001, 0x4000000, 0x4000001, 0x4100000, 0x4100001, 0x100, 0x101, 0x100100, 0x100101, 0x4000100, 0x4000101, 0x4100100, 0x4100101};
int[] pc2bytes2 = {0, 0x8, 0x800, 0x808, 0x1000000, 0x1000008, 0x1000800, 0x1000808, 0, 0x8, 0x800, 0x808, 0x1000000, 0x1000008, 0x1000800, 0x1000808};
int[] pc2bytes3 = {0, 0x200000, 0x8000000, 0x8200000, 0x2000, 0x202000, 0x8002000, 0x8202000, 0x20000, 0x220000, 0x8020000, 0x8220000, 0x22000, 0x222000, 0x8022000, 0x8222000};
int[] pc2bytes4 = {0, 0x40000, 0x10, 0x40010, 0, 0x40000, 0x10, 0x40010, 0x1000, 0x41000, 0x1010, 0x41010, 0x1000, 0x41000, 0x1010, 0x41010};
int[] pc2bytes5 = {0, 0x400, 0x20, 0x420, 0, 0x400, 0x20, 0x420, 0x2000000, 0x2000400, 0x2000020, 0x2000420, 0x2000000, 0x2000400, 0x2000020, 0x2000420};
int[] pc2bytes6 = {0, 0x10000000, 0x80000, 0x10080000, 0x2, 0x10000002, 0x80002, 0x10080002, 0, 0x10000000, 0x80000, 0x10080000, 0x2, 0x10000002, 0x80002, 0x10080002};
int[] pc2bytes7 = {0, 0x10000, 0x800, 0x10800, 0x20000000, 0x20010000, 0x20000800, 0x20010800, 0x20000, 0x30000, 0x20800, 0x30800, 0x20020000, 0x20030000, 0x20020800, 0x20030800};
int[] pc2bytes8 = {0, 0x40000, 0, 0x40000, 0x2, 0x40002, 0x2, 0x40002, 0x2000000, 0x2040000, 0x2000000, 0x2040000, 0x2000002, 0x2040002, 0x2000002, 0x2040002};
int[] pc2bytes9 = {0, 0x10000000, 0x8, 0x10000008, 0, 0x10000000, 0x8, 0x10000008, 0x400, 0x10000400, 0x408, 0x10000408, 0x400, 0x10000400, 0x408, 0x10000408};
int[] pc2bytes10 = {0, 0x20, 0, 0x20, 0x100000, 0x100020, 0x100000, 0x100020, 0x2000, 0x2020, 0x2000, 0x2020, 0x102000, 0x102020, 0x102000, 0x102020};
int[] pc2bytes11 = {0, 0x1000000, 0x200, 0x1000200, 0x200000, 0x1200000, 0x200200, 0x1200200, 0x4000000, 0x5000000, 0x4000200, 0x5000200, 0x4200000, 0x5200000, 0x4200200, 0x5200200};
int[] pc2bytes12 = {0, 0x1000, 0x8000000, 0x8001000, 0x80000, 0x81000, 0x8080000, 0x8081000, 0x10, 0x1010, 0x8000010, 0x8001010, 0x80010, 0x81010, 0x8080010, 0x8081010};
int[] pc2bytes13 = {0, 0x4, 0x100, 0x104, 0, 0x4, 0x100, 0x104, 0x1, 0x5, 0x101, 0x105, 0x1, 0x5, 0x101, 0x105};

    int iterations = beinetkey.length() >= 24 ? 3 : 1;int[] keys = new int[32 * iterations];int[] shifts = {0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0};int left = 0, right = 0;int lefttemp = 0;int righttemp = 0;int m = 0, n = 0;int temp;for (int j = 0; j < iterations; j++) {int[] tmp = {0, 0, 0, 0, 0, 0, 0, 0};int pos = 24;int iTmp = 0;while (m < beinetkey.length() && iTmp < tmp.length) {if (pos < 0)pos = 24;tmp[iTmp++] = beinetkey.toCharArray()[m++] << pos;pos -= 8;}left = tmp[0] | tmp[1] | tmp[2] | tmp[3];right = tmp[4] | tmp[5] | tmp[6] | tmp[7];temp = ((left >>> 4) ^ right) & 0x0f0f0f0f;right ^= temp;left ^= (temp << 4);temp = ((right >>> -16) ^ left) & 0x0000ffff;left ^= temp;right ^= (temp << -16);temp = ((left >>> 2) ^ right) & 0x33333333;right ^= temp;left ^= (temp << 2);temp = ((right >>> -16) ^ left) & 0x0000ffff;left ^= temp;right ^= (temp << -16);temp = ((left >>> 1) ^ right) & 0x55555555;right ^= temp;left ^= (temp << 1);temp = ((right >>> 8) ^ left) & 0x00ff00ff;left ^= temp;right ^= (temp << 8);temp = ((left >>> 1) ^ right) & 0x55555555;right ^= temp;left ^= (temp << 1);temp = (left << 8) | ((right >>> 20) & 0x000000f0);left = (right << 24) | ((right << 8) & 0xff0000) | ((right >>> 8) & 0xff00) | ((right >>> 24) & 0xf0);right = temp;for (int i = 0; i < shifts.length; i++) {if (shifts[i] == 1) {left = (left << 2) | (left >>> 26);right = (right << 2) | (right >>> 26);} else {left = (left << 1) | (left >>> 27);right = (right << 1) | (right >>> 27);}left &= -0xf;right &= -0xf;lefttemp = pc2bytes0[(left >>> 28)] | pc2bytes1[(left >>> 24) & 0xf]| pc2bytes2[(left >>> 20) & 0xf] | pc2bytes3[(left >>> 16) & 0xf]| pc2bytes4[(left >>> 12) & 0xf] | pc2bytes5[(left >>> 8) & 0xf]| pc2bytes6[(left >>> 4) & 0xf];righttemp = pc2bytes7[(right >>> 28)] | pc2bytes8[(right >>> 24) & 0xf]| pc2bytes9[(right >>> 20) & 0xf] | pc2bytes10[(right >>> 16) & 0xf]| pc2bytes11[(right >>> 12) & 0xf] | pc2bytes12[(right >>> 8) & 0xf]| pc2bytes13[(right >>> 4) & 0xf];temp = ((righttemp >>> 16) ^ lefttemp) & 0x0000ffff;keys[n++] = lefttemp ^ temp;keys[n++] = righttemp ^ (temp << 16);}}return keys;
}private  String des(String beinetkey, String message, boolean encrypt, boolean mode, String iv) {long[] spfunction1 = {0x1010400, 0, 0x10000, 0x1010404, 0x1010004, 0x10404, 0x4, 0x10000, 0x400, 0x1010400, 0x1010404, 0x400, 0x1000404, 0x1010004, 0x1000000, 0x4, 0x404, 0x1000400, 0x1000400, 0x10400, 0x10400, 0x1010000, 0x1010000, 0x1000404, 0x10004, 0x1000004, 0x1000004, 0x10004, 0, 0x404, 0x10404, 0x1000000, 0x10000, 0x1010404, 0x4, 0x1010000, 0x1010400, 0x1000000, 0x1000000, 0x400, 0x1010004, 0x10000, 0x10400, 0x1000004, 0x400, 0x4, 0x1000404, 0x10404, 0x1010404, 0x10004, 0x1010000, 0x1000404, 0x1000004, 0x404, 0x10404, 0x1010400, 0x404, 0x1000400, 0x1000400, 0, 0x10004, 0x10400, 0, 0x1010004};long[] spfunction2 = {-0x7fef7fe0, -0x7fff8000, 0x8000, 0x108020, 0x100000, 0x20, -0x7fefffe0, -0x7fff7fe0, -0x7fffffe0, -0x7fef7fe0, -0x7fef8000, -0x80000000, -0x7fff8000, 0x100000, 0x20, -0x7fefffe0, 0x108000, 0x100020, -0x7fff7fe0, 0, -0x80000000, 0x8000, 0x108020, -0x7ff00000, 0x100020, -0x7fffffe0, 0, 0x108000, 0x8020, -0x7fef8000, -0x7ff00000, 0x8020, 0, 0x108020, -0x7fefffe0, 0x100000, -0x7fff7fe0, -0x7ff00000, -0x7fef8000, 0x8000, -0x7ff00000, -0x7fff8000, 0x20, -0x7fef7fe0, 0x108020, 0x20, 0x8000, -0x80000000, 0x8020, -0x7fef8000, 0x100000, -0x7fffffe0, 0x100020, -0x7fff7fe0, -0x7fffffe0, 0x100020, 0x108000, 0, -0x7fff8000, 0x8020, -0x80000000, -0x7fefffe0, -0x7fef7fe0, 0x108000};long[] spfunction3 = {0x208, 0x8020200, 0, 0x8020008, 0x8000200, 0, 0x20208, 0x8000200, 0x20008, 0x8000008, 0x8000008, 0x20000, 0x8020208, 0x20008, 0x8020000, 0x208, 0x8000000, 0x8, 0x8020200, 0x200, 0x20200, 0x8020000, 0x8020008, 0x20208, 0x8000208, 0x20200, 0x20000, 0x8000208, 0x8, 0x8020208, 0x200, 0x8000000, 0x8020200, 0x8000000, 0x20008, 0x208, 0x20000, 0x8020200, 0x8000200, 0, 0x200, 0x20008, 0x8020208, 0x8000200, 0x8000008, 0x200, 0, 0x8020008, 0x8000208, 0x20000, 0x8000000, 0x8020208, 0x8, 0x20208, 0x20200, 0x8000008, 0x8020000, 0x8000208, 0x208, 0x8020000, 0x20208, 0x8, 0x8020008, 0x20200};long[] spfunction4 = {0x802001, 0x2081, 0x2081, 0x80, 0x802080, 0x800081, 0x800001, 0x2001, 0, 0x802000, 0x802000, 0x802081, 0x81, 0, 0x800080, 0x800001, 0x1, 0x2000, 0x800000, 0x802001, 0x80, 0x800000, 0x2001, 0x2080, 0x800081, 0x1, 0x2080, 0x800080, 0x2000, 0x802080, 0x802081, 0x81, 0x800080, 0x800001, 0x802000, 0x802081, 0x81, 0, 0, 0x802000, 0x2080, 0x800080, 0x800081, 0x1, 0x802001, 0x2081, 0x2081, 0x80, 0x802081, 0x81, 0x1, 0x2000, 0x800001, 0x2001, 0x802080, 0x800081, 0x2001, 0x2080, 0x800000, 0x802001, 0x80, 0x800000, 0x2000, 0x802080};long[] spfunction5 = {0x100, 0x2080100, 0x2080000, 0x42000100, 0x80000, 0x100, 0x40000000, 0x2080000, 0x40080100, 0x80000, 0x2000100, 0x40080100, 0x42000100, 0x42080000, 0x80100, 0x40000000, 0x2000000, 0x40080000, 0x40080000, 0, 0x40000100, 0x42080100, 0x42080100, 0x2000100, 0x42080000, 0x40000100, 0, 0x42000000, 0x2080100, 0x2000000, 0x42000000, 0x80100, 0x80000, 0x42000100, 0x100, 0x2000000, 0x40000000, 0x2080000, 0x42000100, 0x40080100, 0x2000100, 0x40000000, 0x42080000, 0x2080100, 0x40080100, 0x100, 0x2000000, 0x42080000, 0x42080100, 0x80100, 0x42000000, 0x42080100, 0x2080000, 0, 0x40080000, 0x42000000, 0x80100, 0x2000100, 0x40000100, 0x80000, 0, 0x40080000, 0x2080100, 0x40000100};long[] spfunction6 = {0x20000010, 0x20400000, 0x4000, 0x20404010, 0x20400000, 0x10, 0x20404010, 0x400000, 0x20004000, 0x404010, 0x400000, 0x20000010, 0x400010, 0x20004000, 0x20000000, 0x4010, 0, 0x400010, 0x20004010, 0x4000, 0x404000, 0x20004010, 0x10, 0x20400010, 0x20400010, 0, 0x404010, 0x20404000, 0x4010, 0x404000, 0x20404000, 0x20000000, 0x20004000, 0x10, 0x20400010, 0x404000, 0x20404010, 0x400000, 0x4010, 0x20000010, 0x400000, 0x20004000, 0x20000000, 0x4010, 0x20000010, 0x20404010, 0x404000, 0x20400000, 0x404010, 0x20404000, 0, 0x20400010, 0x10, 0x4000, 0x20400000, 0x404010, 0x4000, 0x400010, 0x20004010, 0, 0x20404000, 0x20000000, 0x400010, 0x20004010};long[] spfunction7 = {0x200000, 0x4200002, 0x4000802, 0, 0x800, 0x4000802, 0x200802, 0x4200800, 0x4200802, 0x200000, 0, 0x4000002, 0x2, 0x4000000, 0x4200002, 0x802, 0x4000800, 0x200802, 0x200002, 0x4000800, 0x4000002, 0x4200000, 0x4200800, 0x200002, 0x4200000, 0x800, 0x802, 0x4200802, 0x200800, 0x2, 0x4000000, 0x200800, 0x4000000, 0x200800, 0x200000, 0x4000802, 0x4000802, 0x4200002, 0x4200002, 0x2, 0x200002, 0x4000000, 0x4000800, 0x200000, 0x4200800, 0x802, 0x200802, 0x4200800, 0x802, 0x4000002, 0x4200802, 0x4200000, 0x200800, 0, 0x2, 0x4200802, 0, 0x200802, 0x4200000, 0x800, 0x4000002, 0x4000800, 0x800, 0x200002};long[] spfunction8 = {0x10001040, 0x1000, 0x40000, 0x10041040, 0x10000000, 0x10001040, 0x40, 0x10000000, 0x40040, 0x10040000, 0x10041040, 0x41000, 0x10041000, 0x41040, 0x1000, 0x40, 0x10040000, 0x10000040, 0x10001000, 0x1040, 0x41000, 0x40040, 0x10040040, 0x10041000, 0x1040, 0, 0, 0x10040040, 0x10000040, 0x10001000, 0x41040, 0x40000, 0x41040, 0x40000, 0x10041000, 0x1000, 0x40, 0x10040040, 0x1000, 0x41040, 0x10001000, 0x40, 0x10000040, 0x10040000, 0x10040040, 0x10000000, 0x40000, 0x10001040, 0, 0x10041040, 0x40040, 0x10000040, 0x10040000, 0x10001000, 0x10001040, 0, 0x10041040, 0x41000, 0x41000, 0x1040, 0x1040, 0x40040, 0x10000000, 0x10041000};int[] keys = des_createKeys(beinetkey);int m = 0;int i, j;int temp, right1, right2, left, right;int[] looping;int cbcleft = 0, cbcleft2 = 0, cbcright = 0, cbcright2 = 0;int endloop;int loopinc;int len = message.length();int chunk = 0;int iterations = keys.length == 32 ? 3 : 9;if (iterations == 3) {looping = encrypt ? new int[]{0, 32, 2} : new int[]{30, -2, -2};} else {looping = encrypt ? new int[]{0, 32, 2, 62, 30, -2, 64, 96, 2} : new int[]{94, 62, -2, 32, 64, 2, 30, -2, -2};}if (encrypt) {message += "\0\0\0\0\0\0\0\0";}String result = "";String tempresult = "";if (mode) {int[] tmp = {0, 0, 0, 0, 0, 0, 0, 0};int pos = 24;int iTmp = 0;while (m < iv.length() && iTmp < tmp.length) {if (pos < 0)pos = 24;tmp[iTmp++] = iv.toCharArray()[m++] << pos;pos -= 8;}cbcleft = tmp[0] | tmp[1] | tmp[2] | tmp[3];cbcright = tmp[4] | tmp[5] | tmp[6] | tmp[7];m = 0;}while (m < len) {if (encrypt) {left = (message.toCharArray()[m++] << 16) | message.toCharArray()[m++];right = (message.toCharArray()[m++] << 16) | message.toCharArray()[m++];} else {left = (message.toCharArray()[m++] << 24) | (message.toCharArray()[m++] << 16) | (message.toCharArray()[m++] << 8) | message.toCharArray()[m++];right = (message.toCharArray()[m++] << 24) | (message.toCharArray()[m++] << 16) | (message.toCharArray()[m++] << 8) | message.toCharArray()[m++];}if (mode) {if (encrypt) {left ^= cbcleft;right ^= cbcright;} else {cbcleft2 = cbcleft;cbcright2 = cbcright;cbcleft = left;cbcright = right;}}temp = ((left >>> 4) ^ right) & 0x0f0f0f0f;right ^= temp;left ^= (temp << 4);temp = ((left >>> 16) ^ right) & 0x0000ffff;right ^= temp;left ^= (temp << 16);temp = ((right >>> 2) ^ left) & 0x33333333;left ^= temp;right ^= (temp << 2);temp = ((right >>> 8) ^ left) & 0x00ff00ff;left ^= temp;right ^= (temp << 8);temp = ((left >>> 1) ^ right) & 0x55555555;right ^= temp;left ^= (temp << 1);left = ((left << 1) | (left >>> 31));right = ((right << 1) | (right >>> 31));for (j = 0; j < iterations; j += 3) {endloop = looping[j + 1];loopinc = looping[j + 2];for (i = looping[j]; i != endloop; i += loopinc) {right1 = right ^ keys[i];right2 = ((right >>> 4) | (right << 28)) ^ keys[i + 1];temp = left;left = right;right = (int) (temp ^ (spfunction2[(right1 >>> 24) & 0x3f] | spfunction4[(right1 >>> 16) & 0x3f] | spfunction6[(right1 >>> 8) & 0x3f] | spfunction8[right1 & 0x3f] | spfunction1[(right2 >>> 24) & 0x3f] | spfunction3[(right2 >>> 16) & 0x3f] | spfunction5[(right2 >>> 8) & 0x3f] | spfunction7[right2 & 0x3f]));}temp = left;left = right;right = temp;}left = ((left >>> 1) | (left << 31));right = ((right >>> 1) | (right << 31));temp = ((left >>> 1) ^ right) & 0x55555555;right ^= temp;left ^= (temp << 1);temp = ((right >>> 8) ^ left) & 0x00ff00ff;left ^= temp;right ^= (temp << 8);temp = ((right >>> 2) ^ left) & 0x33333333;left ^= temp;right ^= (temp << 2);temp = ((left >>> 16) ^ right) & 0x0000ffff;right ^= temp;left ^= (temp << 16);temp = ((left >>> 4) ^ right) & 0x0f0f0f0f;right ^= temp;left ^= (temp << 4);if (mode) {if (encrypt) {cbcleft = left;cbcright = right;} else {left ^= cbcleft2;right ^= cbcright2;}}if (encrypt) {tempresult += new String(new char[]{(char) (left >>> 24),(char) ((left >>> 16) & 0xff),(char) ((left >>> 8) & 0xff),(char) (left & 0xff),(char) (right >>> 24),(char) ((right >>> 16) & 0xff),(char) ((right >>> 8) & 0xff),(char) (right & 0xff)});} else {int tmpch = ((left >>> 16) & 0xffff);if (tmpch != 0)tempresult += (char) tmpch;tmpch = (left & 0xffff);if (tmpch != 0)tempresult += (char) tmpch;tmpch = ((right >>> 16) & 0xffff);if (tmpch != 0)tempresult += (char) tmpch;tmpch = (right & 0xffff);if (tmpch != 0)tempresult += (char) tmpch;}chunk += encrypt ? 16 : 8;if (chunk == 512) {result += tempresult;tempresult = "";chunk = 0;}}return result + tempresult;
}private  String stringToHex(String s) {String r = "";String[] hexes = new String[]{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};for (int i = 0; i < (s.length()); i++) {r += hexes[s.toCharArray()[i] >>> 4] + hexes[s.toCharArray()[i] & 15];}return r;
}/*** 对字符串JSDES加密处理** @Param: 字符串, 秘钥* @return: 加密后的字符串* @Author: Wulis* @Date: 2019/12/11 16:30*/
@Override
public  String enJSDES(String inputString, String key) throws Exception {try {if (StringUtils.isEmpty(key)) {return inputString;}String desc = des(key, inputString, true, false, "");return stringToHex(desc);} catch (Exception ex) {return inputString;}
}private String HexTostring(String s) {String ret = "";for (int i = 0; i < s.length(); i += 2) {int sxx = Integer.parseInt(s.substring(i, i + 2), 16);  // Convert.ToInt32(s.Substring(i, 2), 16);ret += (char) sxx;}return ret;
}/*** @解密JSDES字符串* @Param: 加密后的字符串, 秘钥* @return: 解密后的字符串* @Author: Wulis* @Date: 2019/12/11 16:29*/
public  String deJSDES(String inputString, String key) {try {if (StringUtils.isEmpty(key)) {return inputString;}return des(key, HexTostring(inputString), false, false, "");} catch (Exception ex) {return inputString;}
}

java的一种加解密方法相关推荐

  1. java和php对接通用加解密方法整理

    整理记录下,java和php对接,对于数据加解密的方法. import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; imp ...

  2. java实现对文件加解密操作

    源文件: 加密后的文件: 解密后的文件: package com.gblfy.test;import java.io.*;/*** java 实现对文件加解密的方法** @author gblfy* ...

  3. SM2加密解决java与iOS端加解密不配套问题

    SM2加密解决java与iOS端加解密不配套问题 问题描述 问题判定 代码 声明 问题描述 使用java开发的SM2加解密,由java层生成SM2公私钥,iOS.Android(因和java层一致,暂 ...

  4. JAVA实现PGP/GPG加解密

    注:文章皆为个人纪录,可用性请以最终结果为准,若有错还请大佬们指出,谢谢! 一.加解密的准备资料 1.1  公钥 (用于加密) 1.2  私钥(用于解密) 1.3   私钥key (用于验证私钥) 导 ...

  5. java实现国密加解密

    1. pom依赖 <dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-j ...

  6. base64前端加解密方法

    18.base64前端加解密方法 1.添加方法js方法 const Base64 = {//加密encode(str) {if (str===undefined || str === "&q ...

  7. 与非java语言使用RSA加解密遇到的问题:algid parse error, not a sequence

    遇到的问题 在一个与Ruby语言对接的项目中,决定使用RSA算法来作为数据传输的加密与签名算法.但是,在使用Ruby生成后给我的私钥时,却发生了异常:IOException: algid parse ...

  8. 前后端java+vue 实现rsa 加解密与摘要签名算法

    RSA有两个密钥,一个是公开的,称为公开密钥:一个是私密的,称为私密密钥. 特点: 公开密钥是对大众公开的,私密密钥是服务器私有的,两者不能互推得出. 用公开密钥对数据进行加密,私密密钥可解密:私密密 ...

  9. aes解密算法 java_AES算法实现Java和JS互通加解密

    实际开发中客户端与服务端的通信内容往往需要通过密文传输,本文将介绍可以实现Java与js的互相加解密的AES加密方式 Java语言实现 public class AESTest { //static ...

  10. AES-GCM算法 Java与Python互相加解密

    文章目录 1. AES 2. AES的分组长度和秘钥长度 3.AES加密模式 4.AES-GCM 5. JAVA应用 5.1 生成密钥 5.2 加密 5.3 解密 6. Python应用 7. 测试一 ...

最新文章

  1. html5 php服务器搭建,使用Apache 搭建web 网站服务器
  2. 思科设置密码及一些基本操作
  3. 清北顶会学霸:“表情”与“认知”引发的科学思辨 | 清华AI Time PHD
  4. Vue中实现输入框Input输入格式限制
  5. [Qt教程] 第16篇 2D绘图(六)坐标系统
  6. Educational Codeforces Round 94 (Rated for Div. 2) D(思维)
  7. VMware vSphere克隆虚拟机
  8. SATA硬盘检测修复及MHDD的一些使用详解
  9. Django model 设置数据库 字段 编码
  10. get/post在线接口
  11. 微信聊天记录导出为电脑txt文件教程
  12. linux下无线网卡做热点,用ArchLinux做wifi热点无线路由
  13. 女生应该读的30本书
  14. 高性能网络编程之 Reactor 网络模型(彻底搞懂)
  15. python数据分析基础技术篇_HTML5小游戏---爱心鱼(上)
  16. ubuntu12.04.4安装tcl/tk和Tkinter
  17. 还儿童一个健康上网环境,正式开启我的路由器URL网址白名单之旅
  18. vrf路由泄露原理和简单示例
  19. 主流的大数据BI软件有哪些?
  20. iPhont X适配

热门文章

  1. 无限循环滚动代码阿里巴巴国际站店铺装修代码底图滚动黑色半透明显示效果自定义内容装修代码全屏显示
  2. 互联网诞生记: 浪成于微澜之间
  3. php 数字转换为字符串,PHP-将数字转换为Excel的字符串
  4. java冻结行列,Java 冻结或解除冻结Excel中的行和列的方法
  5. julia 编程语言_Julia(Julia)编程语言入门
  6. pt100热电阻计算公式C语言,牛顿法在Pt100铂热电阻温度计算中的应用特性分析
  7. 手机图形计算器matlab,图形计算器Mathlab
  8. android 自定义searchview,android自定义searchView圆角
  9. uva 10099 The Tourist Guide nyoj 1019 亲戚来了【单个路线最大流【最短路算法】】
  10. [go]简单的RPC框架