|
|
@@ -10,6 +10,7 @@ import java.security.MessageDigest;
|
|
|
public class PasswordUtils {
|
|
|
public static final int HASH_INTERATIONS = 1024;
|
|
|
public static final int SALT_SIZE = 8;
|
|
|
+ public static final int SUB_LENGTH = 16;
|
|
|
|
|
|
/**
|
|
|
* MD5加密
|
|
|
@@ -60,6 +61,15 @@ public class PasswordUtils {
|
|
|
return Encodes.encodeHex(salt);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 生成安全的密码,生成随机的16位salt并经过1024次 sha-1 hash
|
|
|
+ */
|
|
|
+ public static String entryptPassword(String plainPassword) {
|
|
|
+ byte[] salt = Digests.generateSalt(SALT_SIZE);
|
|
|
+ byte[] hashPassword = Digests.sha1(plainPassword.getBytes(), salt, HASH_INTERATIONS);
|
|
|
+ return Encodes.encodeHex(salt) + Encodes.encodeHex(hashPassword);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 生成安全的密码,生成随机的16位salt并经过1024次 sha-1 hash
|
|
|
* @param plainPassword 明文密码
|
|
|
@@ -72,6 +82,18 @@ public class PasswordUtils {
|
|
|
return Encodes.encodeHex(saltByte) + Encodes.encodeHex(hashPassword);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 验证密码
|
|
|
+ * @param plainPassword 明文密码
|
|
|
+ * @param password 密文密码
|
|
|
+ * @return 验证成功返回true
|
|
|
+ */
|
|
|
+ public static boolean validatePassword(String plainPassword, String password) {
|
|
|
+ byte[] salt = Encodes.decodeHex(password.substring(0, SUB_LENGTH));
|
|
|
+ byte[] hashPassword = Digests.sha1(plainPassword.getBytes(), salt, HASH_INTERATIONS);
|
|
|
+ return password.equals(Encodes.encodeHex(salt) + Encodes.encodeHex(hashPassword));
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 验证密码
|
|
|
* @param plainPassword 明文密码
|
|
|
@@ -85,18 +107,155 @@ public class PasswordUtils {
|
|
|
return password.equals(Encodes.encodeHex(saltByte) + Encodes.encodeHex(hashPassword));
|
|
|
}
|
|
|
|
|
|
+ //SELECT GROUP_CONCAT(CONCAT(id, ',', phone, ',', password), ';') str from sckw_fleet.kwf_driver ;
|
|
|
+ public static void checkDriver(){
|
|
|
+ String str = "194387851457073152,15906330241,eecbc181d1b9bb02273a862f9ca0639662664902f4e5825a06e96acd;,\n" +
|
|
|
+ "194388946380132352,16103220127,f98a8a0301209bd99df2b96ea27f3094724affdce28981c27470a8bf;,\n" +
|
|
|
+ "194388946438852608,17803220127,08fa98c73281124a2bb4b1170a32b1deaebe285701562806a7d6e727;,\n" +
|
|
|
+ "194393368019603456,16612341231,0a1d11b99de6505f2e2f199e651617c1c9ba8bf427922706fa47be88;,\n" +
|
|
|
+ "194393368090906624,16612341232,38c0a901185dc2eb85f32f83ea6e7df868e93ac35f0544d6043bd8e3;,\n" +
|
|
|
+ "194393368158015488,16612341233,e71750094efa79c938ec9dfe5fd32145733e9ff52e655d525f3c3dd3;,\n" +
|
|
|
+ "194393368225124352,16612341234,acba7d7141b132e3cb14cd973e7dd6837c0a4d26aefd98cc0a0eb5b1;,\n" +
|
|
|
+ "194393368292233216,16612341235,142b2a094964fbfb57dc58574b8200978b9316fb5642d72f343a7d19;,\n" +
|
|
|
+ "194393368355147776,16612341236,98bdd7f8e72dfd3a5bd4b6d4908ddc3379efcd40fecfcc138fa2b0a2;,\n" +
|
|
|
+ "194393368413868032,16612341237,091acbe6db8039975bafc1ecaae4c0ef7ded3680346d39fe5a516fa4;,\n" +
|
|
|
+ "194393368468393984,16612341238,55b8a0e40bbaa6b2db552fc19eef5de717bf17617b6fb2196ee20dc8;,\n" +
|
|
|
+ "194393368535502848,16612341239,e2cbdb64a6686c0d6fd217a735aace3dcfd12a8ca8df4d6f164045eb;,\n" +
|
|
|
+ "194393368598417408,16612341240,8fbeaab33779c2e176c867b7b1080316fefa249e50d67d067f92de36;,\n" +
|
|
|
+ "194409328453619712,19500567777,826c0f788550c5aa04259284187a794f804bb0f5f6fb805b8a362e2d;,\n" +
|
|
|
+ "194409631877959680,18506461104,21994323cdcd2029c0ae914c1d119ddbbaf62c44cfdc46b236fb809a";
|
|
|
+ String [] strArray = str.split(";,");
|
|
|
+
|
|
|
+ for (int i=0; i<strArray.length; i++) {
|
|
|
+ String str1 = strArray[i];
|
|
|
+ if (StringUtils.isBlank(str1.trim())) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String [] strArray1 = str1.split(",");
|
|
|
+ String id = strArray1[0];
|
|
|
+ String account = strArray1[1];
|
|
|
+ String password = strArray1[2];
|
|
|
+ System.out.print("-- " + account + "==>");
|
|
|
+
|
|
|
+ String md5 = PasswordUtils.md5(account);
|
|
|
+ boolean bool = PasswordUtils.validatePassword(md5, password);
|
|
|
+
|
|
|
+ if (!bool) {
|
|
|
+ md5 = PasswordUtils.md5("123456");
|
|
|
+ bool = PasswordUtils.validatePassword(md5, password);
|
|
|
+ if (bool) {
|
|
|
+ System.out.println(bool);
|
|
|
+ String salt = PasswordUtils.generateSalt();
|
|
|
+ md5 = PasswordUtils.md5("123456");
|
|
|
+ password = PasswordUtils.entryptPassword(account + md5, salt);
|
|
|
+ String sql = "UPDATE sckw_fleet.kwf_driver set password = '"+password+"', salt = '"+salt+"' where id = "+id+";";
|
|
|
+ System.out.println(sql);
|
|
|
+ } else {
|
|
|
+ System.out.println(bool);
|
|
|
+ String salt = PasswordUtils.generateSalt();
|
|
|
+ md5 = PasswordUtils.md5(account);
|
|
|
+ password = PasswordUtils.entryptPassword(account + md5, salt);
|
|
|
+ String sql = "UPDATE sckw_fleet.kwf_driver set password = '"+password+"', salt = '"+salt+"' where id = "+id+";";
|
|
|
+ System.out.println(sql);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ System.out.println(bool);
|
|
|
+ String salt = PasswordUtils.generateSalt();
|
|
|
+ md5 = PasswordUtils.md5(account);
|
|
|
+ password = PasswordUtils.entryptPassword(account + md5, salt);
|
|
|
+ String sql = "UPDATE sckw_fleet.kwf_driver set password = '"+password+"', salt = '"+salt+"' where id = "+id+";";
|
|
|
+ System.out.println(sql);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //SELECT GROUP_CONCAT(CONCAT(id, ',', account, ',', password), ';') str from sckw_system.kws_user ;
|
|
|
+ public static void checkUser(){
|
|
|
+ String str = "169520380059085809,admin,dcfd0a2425c0de428320fcc50074bdd033c45fb4fff265acaa6c830c;,\n" +
|
|
|
+ "193405441856770048,18283808586,ff1c276be8f9577275fae9608343524953e38581bd26e52e42ba0a5d;,\n" +
|
|
|
+ "194251365315252224,15801137739,c055ed325fdbbd7c095e8c39b59408acf089acee383729f968935fa2;,\n" +
|
|
|
+ "194252595617861632,18380201987,eda6ee2147d86880cba6d1e2111624085df3c32858174b75c669adfe;,\n" +
|
|
|
+ "194375643914309632,18710012002,a8af5ad674a04cc90cb78ab6c53e40fc4c0b6d7065cb6541eaf8c886;,\n" +
|
|
|
+ "194376269352144896,19205948910,031224aeae6d02e9e1c755cfed0ae1c1803e669e57fc47607ccebb74;,\n" +
|
|
|
+ "194376374100692992,17750298505,c6e4df2faf2939bc1b39fc528743599443f205d0507f9761d8759500;,\n" +
|
|
|
+ "194376500345049088,18529548150,6a95964ddc93c15cd83e0f55f0c17b36997d0cad73143a87451a2187;,\n" +
|
|
|
+ "194377428502581248,18100050000,197aa10bff5b541e67a2e85a62a2b4d4f84c784e70bbf0e8b4c57df8;,\n" +
|
|
|
+ "194377529241374720,17100090006,6b68268087f4495eb2d24980d8ef56f160643f28d5f67beb2e5eae6b;,\n" +
|
|
|
+ "194378310820564992,19910563333,9070ff23de771125406b8d3d64a14aa1ce125e306c9b56b2f413ba01;,\n" +
|
|
|
+ "194378481813950464,18502566623,51d4b149e6fd5366cd45028dba205ea434b8edce3850b9fe1e694828;,\n" +
|
|
|
+ "194378661632151552,17751566023,223eda5ad43165208ff7a5c541ddf2973dce39d483fd54d82986b06c;,\n" +
|
|
|
+ "194383671120105472,19654891650,7ff015c59d999de3d85590b138c5d0d2983a9d7aceb7e3d566b2a20d;,\n" +
|
|
|
+ "194384082614882304,18156236660,332583f0b7c076efbf561dc7025fba48f1ac325144792ab06b7a4ec9;,\n" +
|
|
|
+ "194384245366460416,19256623205,26aa57ed3d6d01800da79bc3d10fd73178704075d79cd6a9be41733a;,\n" +
|
|
|
+ "194402508158799872,17502110364,f60953f94b492032c2e0f3c742cac0984e45054edd94fcd530285deb;,\n" +
|
|
|
+ "197430014709338112,17358629955,44eeb2b99ce96cc1c4e8162abd138f7f019ee1ea1cf5c1d1648d0c8c;,\n" +
|
|
|
+ "199490721361694720,18030803579,753dab2d3f5ffa69e89c6163b50b9612449291afc6fe4b0db126dbaa;,\n" +
|
|
|
+ "207880065764036608,18300010002,98d2055673659cad04f65eba0ee52dc35a099d7ccdd46776d802c55d;,\n" +
|
|
|
+ "207880550084513792,18300020003,e3f22b98f72adf2e6a09e7542c405f7f521e804b43c31abe229ef0d7;,\n" +
|
|
|
+ "207880951399714816,18300030004,7b7af846238801469c34a6db66e6a78933b17d41efbdaa72aa77c2d1;,\n" +
|
|
|
+ "207881177372037120,18300040005,0db2a482339a344c570ee0498d30c3d8ca01ffd6759d7422399e73aa;,\n" +
|
|
|
+ "207881693040742400,18300050006,fd636774436e0c77a890becf88c221e6124b05af7df20e0fdb89af00;,\n" +
|
|
|
+ "207882233887854592,18300060007,a673662bdf4c56ca8dccfd5da47d537ba397c00ff450fc4b7164aaee;,\n" +
|
|
|
+ "208907056642527232,18725603264,8aa9ec1c5ec2e73a2648745350b49b9cbb3629dbf417fe6b18f44306";
|
|
|
+ String [] strArray = str.split(";,");
|
|
|
+
|
|
|
+ for (int i=0; i<strArray.length; i++) {
|
|
|
+ String str1 = strArray[i];
|
|
|
+ if (StringUtils.isBlank(str1.trim())) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String [] strArray1 = str1.split(",");
|
|
|
+ String id = strArray1[0];
|
|
|
+ String account = strArray1[1];
|
|
|
+ String password = strArray1[2];
|
|
|
+ System.out.print("-- " + account + "==>");
|
|
|
+
|
|
|
+ String md5 = PasswordUtils.md5(account);
|
|
|
+ boolean bool = PasswordUtils.validatePassword(md5, password);
|
|
|
+
|
|
|
+ if (!bool) {
|
|
|
+ md5 = PasswordUtils.md5("123456");
|
|
|
+ bool = PasswordUtils.validatePassword(md5, password);
|
|
|
+ if (bool) {
|
|
|
+ System.out.println(bool);
|
|
|
+ String salt = PasswordUtils.generateSalt();
|
|
|
+ md5 = PasswordUtils.md5("123456");
|
|
|
+ password = PasswordUtils.entryptPassword(account + md5, salt);
|
|
|
+ String sql = "UPDATE sckw_system.kws_user set password = '"+password+"', salt = '"+salt+"' where id = "+id+";";
|
|
|
+ System.out.println(sql);
|
|
|
+ } else {
|
|
|
+ System.out.println(bool);
|
|
|
+ String salt = PasswordUtils.generateSalt();
|
|
|
+ md5 = PasswordUtils.md5(account);
|
|
|
+ password = PasswordUtils.entryptPassword(account + md5, salt);
|
|
|
+ String sql = "UPDATE sckw_system.kws_user set password = '"+password+"', salt = '"+salt+"' where id = "+id+";";
|
|
|
+ System.out.println(sql);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ System.out.println(bool);
|
|
|
+ String salt = PasswordUtils.generateSalt();
|
|
|
+ md5 = PasswordUtils.md5(account);
|
|
|
+ password = PasswordUtils.entryptPassword(account + md5, salt);
|
|
|
+ String sql = "UPDATE sckw_system.kws_user set password = '"+password+"', salt = '"+salt+"' where id = "+id+";";
|
|
|
+ System.out.println(sql);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public static void main(String[] args) throws Exception {
|
|
|
String account = "admin";
|
|
|
- String password = "123456";
|
|
|
+ String password = "Yy123...";
|
|
|
String salt = generateSalt();
|
|
|
System.out.println(salt);
|
|
|
|
|
|
String md5 = PasswordUtils.md5(password);
|
|
|
+ System.out.println(md5);
|
|
|
String password1 = PasswordUtils.entryptPassword(account + md5, salt);
|
|
|
System.out.println(password1);
|
|
|
|
|
|
boolean bool = PasswordUtils.validatePassword(account + md5, password1, salt);
|
|
|
System.out.println(bool);
|
|
|
-
|
|
|
+ //checkDriver();
|
|
|
+ //checkUser();
|
|
|
}
|
|
|
}
|