登录
This commit is contained in:
parent
ba499d2203
commit
9c7638f123
@ -6,11 +6,19 @@ import android.view.View;
|
|||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
|
import com.github.lazylibrary.util.MD5;
|
||||||
|
import com.lzy.okgo.model.HttpParams;
|
||||||
import com.navinfo.outdoor.R;
|
import com.navinfo.outdoor.R;
|
||||||
import com.navinfo.outdoor.base.BaseActivity;
|
import com.navinfo.outdoor.base.BaseActivity;
|
||||||
|
import com.navinfo.outdoor.bean.LoginOauthTokenBean;
|
||||||
|
import com.navinfo.outdoor.http.Callback;
|
||||||
|
import com.navinfo.outdoor.http.HttpInterface;
|
||||||
|
import com.navinfo.outdoor.http.OkGoBuilder;
|
||||||
|
import com.navinfo.outdoor.util.Base64;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 登录页
|
* 登录页
|
||||||
@ -59,13 +67,53 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
|
|||||||
startActivity(forgetPaw);
|
startActivity(forgetPaw);
|
||||||
break;
|
break;
|
||||||
case R.id.btn_login:
|
case R.id.btn_login:
|
||||||
Intent intent = new Intent(this, HomeActivity.class);
|
String name = etLoginName.getText().toString().trim();
|
||||||
startActivity(intent);
|
if (name == null) {
|
||||||
finish();
|
Toast.makeText(this, "请输入账号", Toast.LENGTH_SHORT).show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String paw = etLoginPaw.getText().toString().trim();
|
||||||
|
if (paw == null) {
|
||||||
|
Toast.makeText(this, "请输入密码", Toast.LENGTH_SHORT).show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
initLogIn(name,paw);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initLogIn(String name, String paw) {
|
||||||
|
HttpParams httpParams = new HttpParams();
|
||||||
|
try {
|
||||||
|
httpParams.put("username",name);
|
||||||
|
long time=System.currentTimeMillis();
|
||||||
|
httpParams.put("grant_type",Base64.desEncrypt(time + MD5.md5sum(paw)));
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
showLoadingDialog();
|
||||||
|
OkGoBuilder.getInstance().Builder(this)
|
||||||
|
.url(HttpInterface.USER_LOGIN_OAUTH_TOKEN)
|
||||||
|
.cls(LoginOauthTokenBean.class)
|
||||||
|
.params(httpParams)
|
||||||
|
.postRequest(new Callback<LoginOauthTokenBean>() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess(LoginOauthTokenBean response, int id) {
|
||||||
|
dismissLoadingDialog();
|
||||||
|
Toast.makeText(LoginActivity.this, response.getMessage() + "", Toast.LENGTH_SHORT).show();
|
||||||
|
Intent intent = new Intent(LoginActivity.this, HomeActivity.class);
|
||||||
|
startActivity(intent);
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(Throwable e, int id) {
|
||||||
|
dismissLoadingDialog();
|
||||||
|
Toast.makeText(LoginActivity.this, e.getMessage()+"", Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onConfigurationChanged(@NonNull Configuration newConfig) {
|
public void onConfigurationChanged(@NonNull Configuration newConfig) {
|
||||||
super.onConfigurationChanged(newConfig);
|
super.onConfigurationChanged(newConfig);
|
||||||
|
@ -0,0 +1,27 @@
|
|||||||
|
package com.navinfo.outdoor.bean;
|
||||||
|
|
||||||
|
public class LoginOauthTokenBean {
|
||||||
|
/**
|
||||||
|
* code : 100
|
||||||
|
* message :
|
||||||
|
*/
|
||||||
|
|
||||||
|
private int code;
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
public int getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCode(int code) {
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMessage() {
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMessage(String message) {
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
}
|
@ -92,6 +92,10 @@ public class HttpInterface {
|
|||||||
//172.23.139.4:8001/m4/userAuth/add
|
//172.23.139.4:8001/m4/userAuth/add
|
||||||
public static final String USER_AUTH_ADD = IPm7 + "/userAuth/add"; //实名认证
|
public static final String USER_AUTH_ADD = IPm7 + "/userAuth/add"; //实名认证
|
||||||
|
|
||||||
|
public static final String IPm8 = "http://172.23.139.4:9999/m4/";
|
||||||
|
//http://172.23.139.4:9999/m4/userlogin/oauth/token
|
||||||
|
public static final String USER_LOGIN_OAUTH_TOKEN = IPm7 + "userlogin/oauth/token"; //登录
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 面状任务
|
* 面状任务
|
||||||
*/
|
*/
|
||||||
|
@ -3,6 +3,7 @@ package com.navinfo.outdoor.http;
|
|||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
|
||||||
import com.lzy.okgo.OkGo;
|
import com.lzy.okgo.OkGo;
|
||||||
|
import com.lzy.okgo.model.HttpHeaders;
|
||||||
import com.lzy.okgo.model.HttpParams;
|
import com.lzy.okgo.model.HttpParams;
|
||||||
import com.lzy.okgo.model.Response;
|
import com.lzy.okgo.model.Response;
|
||||||
import com.lzy.okgo.request.PostRequest;
|
import com.lzy.okgo.request.PostRequest;
|
||||||
@ -38,6 +39,8 @@ public class OkGoBuilder<T> {
|
|||||||
private Class<T> clazz;
|
private Class<T> clazz;
|
||||||
private List<File> files;
|
private List<File> files;
|
||||||
|
|
||||||
|
private String token;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 单列模式
|
* 单列模式
|
||||||
**/
|
**/
|
||||||
@ -86,7 +89,10 @@ public class OkGoBuilder<T> {
|
|||||||
this.params = params;
|
this.params = params;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
public OkGoBuilder token(String token) {
|
||||||
|
this.token = token;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
public OkGoBuilder fileList(List<File> files) {
|
public OkGoBuilder fileList(List<File> files) {
|
||||||
this.files = files;
|
this.files = files;
|
||||||
return this;
|
return this;
|
||||||
@ -109,6 +115,14 @@ public class OkGoBuilder<T> {
|
|||||||
* post异步请求
|
* post异步请求
|
||||||
*/
|
*/
|
||||||
public void postRequest(Callback<T> callback) {
|
public void postRequest(Callback<T> callback) {
|
||||||
|
HttpHeaders headers = new HttpHeaders();
|
||||||
|
if (token==null){
|
||||||
|
headers.put("Authorization","Basic YXBwOmFwcHNlY3JldA==");
|
||||||
|
}else {
|
||||||
|
headers.put("Authorization","bearer"+token);
|
||||||
|
|
||||||
|
}
|
||||||
|
headers.put("key",null);
|
||||||
OkGo
|
OkGo
|
||||||
// 请求方式和请求url
|
// 请求方式和请求url
|
||||||
.<T>post(url)
|
.<T>post(url)
|
||||||
@ -116,6 +130,7 @@ public class OkGoBuilder<T> {
|
|||||||
// .upJson(json)
|
// .upJson(json)
|
||||||
// 请求的 tag, 主要用于取消对应的请求
|
// 请求的 tag, 主要用于取消对应的请求
|
||||||
.tag(this)
|
.tag(this)
|
||||||
|
.headers(headers)
|
||||||
// 设置当前请求的缓存key,建议每个不同功能的请求设置一个
|
// 设置当前请求的缓存key,建议每个不同功能的请求设置一个
|
||||||
// .cacheKey("cacheKey")
|
// .cacheKey("cacheKey")
|
||||||
// 缓存模式,详细请看缓存介绍
|
// 缓存模式,详细请看缓存介绍
|
||||||
|
300
app/src/main/java/com/navinfo/outdoor/util/Base64.java
Normal file
300
app/src/main/java/com/navinfo/outdoor/util/Base64.java
Normal file
@ -0,0 +1,300 @@
|
|||||||
|
package com.navinfo.outdoor.util;
|
||||||
|
|
||||||
|
import javax.crypto.*;
|
||||||
|
import javax.crypto.spec.DESKeySpec;
|
||||||
|
import javax.crypto.spec.IvParameterSpec;
|
||||||
|
import javax.crypto.spec.SecretKeySpec;
|
||||||
|
import java.io.*;
|
||||||
|
import java.security.InvalidAlgorithmParameterException;
|
||||||
|
import java.security.InvalidKeyException;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
|
||||||
|
public class Base64 {
|
||||||
|
static final char[] alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
|
||||||
|
.toCharArray();
|
||||||
|
|
||||||
|
public static char[] encode(byte[] content) {
|
||||||
|
CharArrayWriter cw = new CharArrayWriter(4 * content.length / 3);
|
||||||
|
|
||||||
|
int idx = 0;
|
||||||
|
|
||||||
|
int x = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < content.length; ++i) {
|
||||||
|
if (idx == 0)
|
||||||
|
x = (content[i] & 0xFF) << 16;
|
||||||
|
else if (idx == 1)
|
||||||
|
x |= (content[i] & 0xFF) << 8;
|
||||||
|
else {
|
||||||
|
x |= content[i] & 0xFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (++idx == 3) {
|
||||||
|
cw.write(alphabet[(x >> 18)]);
|
||||||
|
cw.write(alphabet[(x >> 12 & 0x3F)]);
|
||||||
|
cw.write(alphabet[(x >> 6 & 0x3F)]);
|
||||||
|
cw.write(alphabet[(x & 0x3F)]);
|
||||||
|
|
||||||
|
idx = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (idx == 1) {
|
||||||
|
cw.write(alphabet[(x >> 18)]);
|
||||||
|
cw.write(alphabet[(x >> 12 & 0x3F)]);
|
||||||
|
cw.write(61);
|
||||||
|
cw.write(61);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (idx == 2) {
|
||||||
|
cw.write(alphabet[(x >> 18)]);
|
||||||
|
cw.write(alphabet[(x >> 12 & 0x3F)]);
|
||||||
|
cw.write(alphabet[(x >> 6 & 0x3F)]);
|
||||||
|
cw.write(61);
|
||||||
|
}
|
||||||
|
|
||||||
|
return cw.toCharArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static byte[] decode(char[] message) throws IOException {
|
||||||
|
byte[] buff = new byte[4];
|
||||||
|
byte[] dest = new byte[message.length];
|
||||||
|
|
||||||
|
int bpos = 0;
|
||||||
|
int destpos = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < message.length; ++i) {
|
||||||
|
int c = message[i];
|
||||||
|
|
||||||
|
if ((c != 10) && (c != 13) && (c != 32)) {
|
||||||
|
if (c == 9)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if ((c >= 65) && (c <= 90)) {
|
||||||
|
buff[(bpos++)] = (byte) (c - 65);
|
||||||
|
} else if ((c >= 97) && (c <= 122)) {
|
||||||
|
buff[(bpos++)] = (byte) (c - 97 + 26);
|
||||||
|
} else if ((c >= 48) && (c <= 57)) {
|
||||||
|
buff[(bpos++)] = (byte) (c - 48 + 52);
|
||||||
|
} else if (c == 43) {
|
||||||
|
buff[(bpos++)] = 62;
|
||||||
|
} else if (c == 47) {
|
||||||
|
buff[(bpos++)] = 63;
|
||||||
|
} else if (c == 61) {
|
||||||
|
buff[(bpos++)] = 64;
|
||||||
|
} else {
|
||||||
|
throw new IOException("Illegal char in base64 code.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bpos == 4) {
|
||||||
|
bpos = 0;
|
||||||
|
|
||||||
|
if (buff[0] == 64)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (buff[1] == 64)
|
||||||
|
throw new IOException("Unexpected '=' in base64 code.");
|
||||||
|
|
||||||
|
int v;
|
||||||
|
if (buff[2] == 64) {
|
||||||
|
v = (buff[0] & 0x3F) << 6 | buff[1] & 0x3F;
|
||||||
|
dest[(destpos++)] = (byte) (v >> 4);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (buff[3] == 64) {
|
||||||
|
v = (buff[0] & 0x3F) << 12 | (buff[1] & 0x3F) << 6
|
||||||
|
| buff[2] & 0x3F;
|
||||||
|
dest[(destpos++)] = (byte) (v >> 10);
|
||||||
|
dest[(destpos++)] = (byte) (v >> 2);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
v = (buff[0] & 0x3F) << 18 | (buff[1] & 0x3F) << 12
|
||||||
|
| (buff[2] & 0x3F) << 6 | buff[3] & 0x3F;
|
||||||
|
dest[(destpos++)] = (byte) (v >> 16);
|
||||||
|
dest[(destpos++)] = (byte) (v >> 8);
|
||||||
|
dest[(destpos++)] = (byte) v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
byte[] res = new byte[destpos];
|
||||||
|
System.arraycopy(dest, 0, res, 0, destpos);
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------
|
||||||
|
|
||||||
|
private static String keyValue = "20140107";
|
||||||
|
private static String keyVector = "20144295";
|
||||||
|
private static final char[] legalChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* data[]进行编码
|
||||||
|
*
|
||||||
|
* @param data
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private static String encode_(byte[] data) {
|
||||||
|
int start = 0;
|
||||||
|
int len = data.length;
|
||||||
|
StringBuffer buf = new StringBuffer(data.length * 3 / 2);
|
||||||
|
|
||||||
|
int end = len - 3;
|
||||||
|
int i = start;
|
||||||
|
int n = 0;
|
||||||
|
|
||||||
|
while (i <= end) {
|
||||||
|
int d = ((((int) data[i]) & 0x0ff) << 16) | ((((int) data[i + 1]) & 0x0ff) << 8) | (((int) data[i + 2]) & 0x0ff);
|
||||||
|
|
||||||
|
buf.append(legalChars[(d >> 18) & 63]);
|
||||||
|
buf.append(legalChars[(d >> 12) & 63]);
|
||||||
|
buf.append(legalChars[(d >> 6) & 63]);
|
||||||
|
buf.append(legalChars[d & 63]);
|
||||||
|
|
||||||
|
i += 3;
|
||||||
|
|
||||||
|
if (n++ >= 14) {
|
||||||
|
n = 0;
|
||||||
|
buf.append(" ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i == start + len - 2) {
|
||||||
|
int d = ((((int) data[i]) & 0x0ff) << 16) | ((((int) data[i + 1]) & 255) << 8);
|
||||||
|
|
||||||
|
buf.append(legalChars[(d >> 18) & 63]);
|
||||||
|
buf.append(legalChars[(d >> 12) & 63]);
|
||||||
|
buf.append(legalChars[(d >> 6) & 63]);
|
||||||
|
buf.append("=");
|
||||||
|
} else if (i == start + len - 1) {
|
||||||
|
int d = (((int) data[i]) & 0x0ff) << 16;
|
||||||
|
|
||||||
|
buf.append(legalChars[(d >> 18) & 63]);
|
||||||
|
buf.append(legalChars[(d >> 12) & 63]);
|
||||||
|
buf.append("==");
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static byte[] decode_(String s) {
|
||||||
|
|
||||||
|
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
||||||
|
try {
|
||||||
|
decode(s, bos);
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException();
|
||||||
|
}
|
||||||
|
byte[] decodedBytes = bos.toByteArray();
|
||||||
|
try {
|
||||||
|
bos.close();
|
||||||
|
bos = null;
|
||||||
|
} catch (IOException ex) {
|
||||||
|
System.err.println("Error while decoding BASE64: " + ex.toString());
|
||||||
|
}
|
||||||
|
return decodedBytes;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void decode(String s, OutputStream os) throws IOException {
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
int len = s.length();
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
while (i < len && s.charAt(i) <= ' ')
|
||||||
|
i++;
|
||||||
|
|
||||||
|
if (i == len)
|
||||||
|
break;
|
||||||
|
|
||||||
|
int tri = (decode(s.charAt(i)) << 18)
|
||||||
|
+ (decode(s.charAt(i + 1)) << 12)
|
||||||
|
+ (decode(s.charAt(i + 2)) << 6)
|
||||||
|
+ (decode(s.charAt(i + 3)));
|
||||||
|
|
||||||
|
os.write((tri >> 16) & 255);
|
||||||
|
if (s.charAt(i + 2) == '=')
|
||||||
|
break;
|
||||||
|
os.write((tri >> 8) & 255);
|
||||||
|
if (s.charAt(i + 3) == '=')
|
||||||
|
break;
|
||||||
|
os.write(tri & 255);
|
||||||
|
|
||||||
|
i += 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int decode(char c) {
|
||||||
|
if (c >= 'A' && c <= 'Z') {
|
||||||
|
return ((int) c) - 65;
|
||||||
|
} else if (c >= 'a' && c <= 'z') {
|
||||||
|
return ((int) c) - 97 + 26;
|
||||||
|
} else if (c >= '0' && c <= '9') {
|
||||||
|
return ((int) c) - 48 + 26 + 26;
|
||||||
|
} else {
|
||||||
|
switch (c) {
|
||||||
|
case '+':
|
||||||
|
return 62;
|
||||||
|
case '/':
|
||||||
|
return 63;
|
||||||
|
case '=':
|
||||||
|
return 0;
|
||||||
|
default:
|
||||||
|
throw new RuntimeException("unexpected code: " + c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 加密
|
||||||
|
*
|
||||||
|
* @param message 待加密的的文本信息
|
||||||
|
* @return 返回加密结果
|
||||||
|
*/
|
||||||
|
public static String desEncrypt(String message) throws Exception {
|
||||||
|
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
|
||||||
|
SecretKey secretKey = keyFactory.generateSecret(new DESKeySpec(keyValue.getBytes("UTF-8")));
|
||||||
|
IvParameterSpec iv = new IvParameterSpec(keyVector.getBytes("UTF-8"));
|
||||||
|
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
|
||||||
|
cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
|
||||||
|
return encode_(cipher.doFinal(message.getBytes("UTF-8")));
|
||||||
|
}
|
||||||
|
public static String desEncrypt1(String message) throws Exception {
|
||||||
|
// SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
|
||||||
|
// SecretKey secretKey = keyFactory.generateSecret(new DESKeySpec(keyValue.getBytes("UTF-8")));
|
||||||
|
SecretKeySpec secretKey = new SecretKeySpec(keyValue.getBytes(), "DES");
|
||||||
|
IvParameterSpec iv = new IvParameterSpec(keyVector.getBytes("UTF-8"));
|
||||||
|
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
|
||||||
|
cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
|
||||||
|
return encode_(cipher.doFinal(message.getBytes("UTF-8")));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解密
|
||||||
|
*
|
||||||
|
* @param message 带解密文本信息
|
||||||
|
* @return 返回解密结果
|
||||||
|
* @throws UnsupportedEncodingException
|
||||||
|
* @throws NoSuchPaddingException
|
||||||
|
* @throws NoSuchAlgorithmException
|
||||||
|
* @throws InvalidAlgorithmParameterException
|
||||||
|
* @throws InvalidKeyException
|
||||||
|
* @throws BadPaddingException
|
||||||
|
* @throws IllegalBlockSizeException
|
||||||
|
*/
|
||||||
|
public static String desDecrypt(String message) throws UnsupportedEncodingException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException {
|
||||||
|
byte[] byteMi = Base64.decode_(message);
|
||||||
|
SecretKeySpec key = new SecretKeySpec(keyValue.getBytes(), "DES");
|
||||||
|
IvParameterSpec iv = new IvParameterSpec(keyVector.getBytes("UTF-8"));
|
||||||
|
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
|
||||||
|
cipher.init(Cipher.DECRYPT_MODE, key, iv);
|
||||||
|
return new String(cipher.doFinal(byteMi),"UTF-8");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
System.out.println(desDecrypt("eLWAo/Fv9CGJmywsP+j+m0s++56MUl6xCb3lykLFsfi7m4YHfxjjcyxJ8vH+ReTv"));
|
||||||
|
// System.out.println(desEncrypt("1626945974657e10adc3949ba59abbe56e057f20f883e"));
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user