RSA加密长文本

master
hwf452 2 years ago
parent b54b648d24
commit 5936035346

@ -147,8 +147,8 @@ public class LoginActivity extends BaseActivity {
}); });
//initNFC(); //initNFC();
// etUse.setText("181145"); etUse.setText("181145");
// etPwd.setText("13902576510"); etPwd.setText("13902576510");
} }
@ -254,73 +254,81 @@ public class LoginActivity extends BaseActivity {
@Override @Override
public void onSucceed(int what, Response<String> response) throws ParseException { public void onSucceed(int what, Response<String> response) throws ParseException {
String json = response.get(); String json = response.get();
Log.i("app", "login-----"); // Log.i("app", "login-----");
Log.i("app", json); // Log.i("app", json);
UserInfo userInfo = GsonUtils.GsonToBean(json, UserInfo.class); String jsonDecode = RSAUtils.decryptBASE64StrByPublic(json);
//Log.i("app",new Gson().toJson(userInfo)); if(TextUtils.isEmpty(jsonDecode)){
if (userInfo != null) { //showToast(UiUtlis.getString(context, R.string.login_no_connect_to_server));
UserInfo.User user = userInfo.getRows().get(0); showToast("登录异常...");
String status = user.getStatus(); }else{
String username = user.getUsernames(); UserInfo userInfo = GsonUtils.GsonToBean(jsonDecode, UserInfo.class);
String token = user.getToken(); //Log.i("app",new Gson().toJson(userInfo));
switch (status) { //Log.i("app", jsonDecode);
case "0": if (userInfo != null) {
showToast("用户名或密码错误"); UserInfo.User user = userInfo.getRows().get(0);
break; String status = user.getStatus();
case "1": String username = user.getUsernames();
SPUtils.put(LoginActivity.this, "save", savePwUser.isChecked()); String token = user.getToken();
SPUtils.put(LoginActivity.this, Contans.USERID, RSAUtils.encryptBASE64StrLocal(etUse.getText().toString())); switch (status) {
SPUtils.put(LoginActivity.this, Contans.USERPWD, RSAUtils.encryptBASE64StrLocal(etPwd.getText().toString())); case "0":
SPUtils.put(LoginActivity.this, Contans.LOGIN_TOKEN, RSAUtils.encryptBASE64StrLocal(token)); showToast("用户名或密码错误");
SPUtils.put(LoginActivity.this, Contans.USERNAME, username); break;
SPUtils.put(LoginActivity.this, Contans.REQUEST_ID, RSAUtils.encryptBASE64StrLocal(user.getId())); case "1":
SPUtils.put(LoginActivity.this, Contans.BZBH, user.getBzbh() == null ? "" : user.getBzbh()); SPUtils.put(LoginActivity.this, "save", savePwUser.isChecked());
SPUtils.put(LoginActivity.this, Contans.BZMC, user.getBzmc() == null ? "" : user.getBzmc()); SPUtils.put(LoginActivity.this, Contans.USERID, RSAUtils.encryptBASE64StrLocal(etUse.getText().toString()));
SPUtils.put(LoginActivity.this, Contans.PERMISSIONSRESULT, user.getPermissionsResult() == null ? "" : user.getPermissionsResult()); SPUtils.put(LoginActivity.this, Contans.USERPWD, RSAUtils.encryptBASE64StrLocal(etPwd.getText().toString()));
SPUtils.put(LoginActivity.this, Contans.ZY, user.getZY() == null ? "" : user.getZY()); SPUtils.put(LoginActivity.this, Contans.LOGIN_TOKEN, RSAUtils.encryptBASE64StrLocal(token));
SPUtils.remove(context, Contans.NFCBM); SPUtils.put(LoginActivity.this, Contans.USERNAME, username);
//格式化日期的对象(转化成习惯的时间格式) SPUtils.put(LoginActivity.this, Contans.REQUEST_ID, RSAUtils.encryptBASE64StrLocal(user.getId()));
SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy年MM月dd日"); SPUtils.put(LoginActivity.this, Contans.BZBH, user.getBzbh() == null ? "" : user.getBzbh());
//静态方法getInstance()使用默认时区和语言环境获得一个日历。 SPUtils.put(LoginActivity.this, Contans.BZMC, user.getBzmc() == null ? "" : user.getBzmc());
Calendar calendar = Calendar.getInstance(); SPUtils.put(LoginActivity.this, Contans.PERMISSIONSRESULT, user.getPermissionsResult() == null ? "" : user.getPermissionsResult());
//输出当前系统时间; SPUtils.put(LoginActivity.this, Contans.ZY, user.getZY() == null ? "" : user.getZY());
//System.out.println("当前系统时间: "+sdFormat.format(calendar.getTime())); SPUtils.remove(context, Contans.NFCBM);
//add()增加日期以天为单位Calendar封装了很多静态的操作时间的单位 //格式化日期的对象(转化成习惯的时间格式)
//增加10天负数则为减少天数 SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy年MM月dd日");
calendar.add(Calendar.DATE, 10); //静态方法getInstance()使用默认时区和语言环境获得一个日历。
//输出增加10天后的时间; Calendar calendar = Calendar.getInstance();
//System.out.println("增加10天后的时间: "+sdFormat.format(calendar.getTime())); //输出当前系统时间;
//输出时间为2020年的第100天 //System.out.println("当前系统时间: "+sdFormat.format(calendar.getTime()));
Date date = sdFormat.parse(sdFormat.format(calendar.getTime())); //add()增加日期以天为单位Calendar封装了很多静态的操作时间的单位
Calendar calendarOne = Calendar.getInstance(); //增加10天负数则为减少天数
calendarOne.setTime(date); calendar.add(Calendar.DATE, 10);
SPUtils.put(LoginActivity.this, Contans.LASTLOGINDATE, sdFormat.format(calendarOne.getTime())); //输出增加10天后的时间;
//System.out.println("加10天后的日期: "+sdFormat.format(calendarOne.getTime())); //System.out.println("增加10天后的时间: "+sdFormat.format(calendar.getTime()));
//System.out.println("登录已失效: "+String.valueOf(Calendar.getInstance().after(calendarOne))); //输出时间为2020年的第100天
Date date = sdFormat.parse(sdFormat.format(calendar.getTime()));
Calendar calendarOne = Calendar.getInstance();
Intent intent = new Intent(LoginActivity.this, MainActivity.class); calendarOne.setTime(date);
startActivity(intent); SPUtils.put(LoginActivity.this, Contans.LASTLOGINDATE, sdFormat.format(calendarOne.getTime()));
finish(); //System.out.println("加10天后的日期: "+sdFormat.format(calendarOne.getTime()));
break; //System.out.println("登录已失效: "+String.valueOf(Calendar.getInstance().after(calendarOne)));
case "2":
showToast("登录异常...");
break; Intent intent = new Intent(LoginActivity.this, MainActivity.class);
case "3": startActivity(intent);
showToast("未激活或未授权..."); finish();
break; break;
case "4": case "2":
showToast("禁止登陆..."); showToast("登录异常...");
break; break;
case "3":
showToast("未激活或未授权...");
break;
case "4":
showToast("禁止登陆...");
break;
}
} else {
showToast(UiUtlis.getString(context, R.string.login_no_connect_to_server));
} }
} else {
showToast(UiUtlis.getString(context, R.string.login_no_connect_to_server));
} }
} }
@Override @Override
public void onFailed(int what, Response<String> response) { public void onFailed(int what, Response<String> response) {
showToast(UiUtlis.getString(context, R.string.login_no_connect_to_server));
} }
}; };
@ -343,16 +351,17 @@ public class LoginActivity extends BaseActivity {
userInfo.setSysversion(sysVersion); userInfo.setSysversion(sysVersion);
userInfo.setPhonemodel(model); userInfo.setPhonemodel(model);
userInfo.setPhonenum(""); userInfo.setPhonenum("");
// userInfo.setUsername(UiUtlis.getText(etUse)); userInfo.setUsername(UiUtlis.getText(etUse));
// userInfo.setPassword(UiUtlis.getText(etPwd)); userInfo.setPassword(UiUtlis.getText(etPwd));
//公钥加密处理 //公钥加密处理
userInfo.setUsername(RSAUtils.encryptBASE64Str(UiUtlis.getText(etUse))); // userInfo.setUsername(RSAUtils.encryptBASE64Str(UiUtlis.getText(etUse)));
userInfo.setPassword(RSAUtils.encryptBASE64Str(UiUtlis.getText(etPwd))); // userInfo.setPassword(RSAUtils.encryptBASE64Str(UiUtlis.getText(etPwd)));
list.add(userInfo); list.add(userInfo);
info.setRows(list); info.setRows(list);
String json = GsonUtils.GsonString(info); String json = GsonUtils.GsonString(info);
Log.i("app", json); //Log.i("app", json);
return json; //Log.i("app",RSAUtils.encryptBASE64Str(json));
return RSAUtils.encryptBASE64Str(json)+"1";
} }
public String getNfcInfo(String nfcId) { public String getNfcInfo(String nfcId) {

@ -157,8 +157,8 @@ public class MainActivity extends BaseActivity3 {
checkUpdateApk(); checkUpdateApk();
List<String> permissionsResult = this.getPermissionsResult(); List<String> permissionsResult = this.getPermissionsResult();
// Log.i("app", "---------"); Log.i("app", "---------");
// Log.i("app", new Gson().toJson(permissionsResult)); Log.i("app", new Gson().toJson(permissionsResult));
boolean isApp_YXXJ = false; boolean isApp_YXXJ = false;
boolean isApp_RLXJ = false; boolean isApp_RLXJ = false;
for (String permissions : permissionsResult) { for (String permissions : permissionsResult) {
@ -222,16 +222,13 @@ public class MainActivity extends BaseActivity3 {
return; return;
} }
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { //动态权限申请
flashUtil.toggle(MainActivity.this); if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
//权限请求
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA}, CAMERA_REQUEST_CODE);
} else { } else {
//动态权限申请 flashUtil.toggle(MainActivity.this);
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { }
//权限请求
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA}, CAMERA_REQUEST_CODE);
} else {
flashUtil.toggle(MainActivity.this);
}
// //检查权限是否授予 // //检查权限是否授予
// if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)!= PackageManager.PERMISSION_GRANTED) { // if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)!= PackageManager.PERMISSION_GRANTED) {
// //权限请求 // //权限请求
@ -239,7 +236,6 @@ public class MainActivity extends BaseActivity3 {
// }else { // }else {
// flashUtil.toggle(MainActivity.this); // flashUtil.toggle(MainActivity.this);
// } // }
}
} }

@ -6,12 +6,13 @@ public class Contans {
public static String LOGIN = "AppLogin.ashx"; public static String LOGIN = "AppLogin.ashx";
public static String LOGINNFC = "AppLogin/userLogin.ashx"; public static String LOGINNFC = "AppLogin/userLogin.ashx";
//内网正式环境 //内网正式环境
//public static String IP = "http://10.20.1.100:8110/"; //public static String IP = "http://10.20.1.100:8500/app/";
public static String IP = "http://192.168.2.90:28500/"; public static String IP = "http://192.168.2.90:28500/app/";
public static String network_type_Intranet = "http://192.168.2.90:28500/"; public static String network_type_Intranet = "http://192.168.2.90:28500/app/";
public static String network_type_extranet = "https://www.zjtsp.com/"; //public static String network_type_Intranet = "http://10.20.1.100:8500/app/";
public static String network_type_extranet = "https://www.zjtsp.com/app/";
public static String MAXIMOIP = "http://10.46.0.152:7001/"; public static String MAXIMOIP = "http://10.46.0.152:7001/";

@ -78,12 +78,13 @@ public class NohttpUtils {
*/ */
public <T> void add(Activity mActivity, int what, Request<T> request, HttpListener<T> callback, boolean canCanel, boolean isLoading, String msg) { public <T> void add(Activity mActivity, int what, Request<T> request, HttpListener<T> callback, boolean canCanel, boolean isLoading, String msg) {
String tokenTemp = (String) SPUtils.get(mActivity, Contans.LOGIN_TOKEN, ""); String tokenTemp = (String) SPUtils.get(mActivity, Contans.LOGIN_TOKEN, "");
Log.i("app", request.url());
if(!TextUtils.isEmpty(tokenTemp)){ if(!TextUtils.isEmpty(tokenTemp)){
String token = RSAUtils.decryptBASE64StrLocal(tokenTemp);; String token = RSAUtils.decryptBASE64StrLocal(tokenTemp);;
String credential = "Bearer " + token; String credential = "Bearer " + token;
request.addHeader("Authorization", credential); request.addHeader("Authorization", credential);
//Log.i("app", request.url()); // Log.i("app", request.url());
// Log.i("app", credential); Log.i("app", credential);
// Log.i("app",new Gson().toJson(request.headers())); // Log.i("app",new Gson().toJson(request.headers()));
} }
mQueue.add(what, request, new HttpResponseListener<T>(mActivity, request, callback, canCanel, isLoading, msg)); mQueue.add(what, request, new HttpResponseListener<T>(mActivity, request, callback, canCanel, isLoading, msg));
@ -92,12 +93,13 @@ public class NohttpUtils {
public <T> void add(Activity mActivity, int what, Request<T> request, HttpListener<T> callback) { public <T> void add(Activity mActivity, int what, Request<T> request, HttpListener<T> callback) {
String tokenTemp = (String) SPUtils.get(mActivity, Contans.LOGIN_TOKEN, ""); String tokenTemp = (String) SPUtils.get(mActivity, Contans.LOGIN_TOKEN, "");
Log.i("app", request.url());
if(!TextUtils.isEmpty(tokenTemp)){ if(!TextUtils.isEmpty(tokenTemp)){
String token = RSAUtils.decryptBASE64StrLocal(tokenTemp);; String token = RSAUtils.decryptBASE64StrLocal(tokenTemp);;
String credential = "Bearer " + token; String credential = "Bearer " + token;
request.addHeader("Authorization", credential); request.addHeader("Authorization", credential);
//Log.i("app", request.url()); //Log.i("app", request.url());
// Log.i("app", credential); Log.i("app", credential);
// Log.i("app",new Gson().toJson(request.headers())); // Log.i("app",new Gson().toJson(request.headers()));
} }
mQueue.add(what, request, new HttpResponseListener<T>(mActivity, request, callback, true, true, "加载中...")); mQueue.add(what, request, new HttpResponseListener<T>(mActivity, request, callback, true, true, "加载中..."));

@ -4,6 +4,7 @@ package com.bjzc.zjyxdxj.utils;
import android.util.Base64; import android.util.Base64;
import android.util.Log; import android.util.Log;
import java.io.ByteArrayOutputStream;
import java.security.Key; import java.security.Key;
import java.security.KeyFactory; import java.security.KeyFactory;
import java.security.KeyPair; import java.security.KeyPair;
@ -24,11 +25,20 @@ public class RSAUtils {
* RSA * RSA
*/ */
public static final String RSA = "RSA"; public static final String RSA = "RSA";
public static final String ECB_None_PKCS1_PADDING = "RSA/None/PKCS1Padding";//java默认加密填充方式 RSA/None/PKCS1Padding
private static final String PUBLIC_KEY = "RSAPublicKey"; private static final String PUBLIC_KEY = "RSAPublicKey";
private static final String PRIVATE_KEY = "RSAPrivateKey"; private static final String PRIVATE_KEY = "RSAPrivateKey";
public static final int DEFAULT_KEY_SIZE = 2048;//秘钥默认长度
//RSA最大加密明文大小 1024位是117 算法 最大加密明文大小 = 1024(bit) / 8 - 11(byte) = 117 byte 最大加密明文大小 = 2048(bit) / 8 - 11(byte) = 245 byte
//private static final int MAX_ENCRYPT_BLOCK = 245;
private static final int MAX_ENCRYPT_BLOCK = (DEFAULT_KEY_SIZE / 8) - 11;
//RSA最大解密密文大小 1024位是128 2048位是 256 依此类推
//private static final int MAX_DECRYPT_BLOCK = 256;
private static final int MAX_DECRYPT_BLOCK = DEFAULT_KEY_SIZE / 8;
//java默认加密填充方式 RSA 对应安卓 RSA/None/PKCS1Padding
//public static final String ECB_None_PKCS1_PADDING = "RSA";
//安卓手机加密填充方式用 RSA/None/PKCS1Padding
public static final String ECB_None_PKCS1_PADDING = "RSA/None/PKCS1Padding";
public static final String public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhpRgDGj3dk8kaNnnQIJ6YjbaEDBYEzDkv3qR3a55odU4/fJ3LFtGQfHM7LzQ3bpYaC8cZiYAu0ByPENW0G7HzVmxPfKdbLZtrRe+9kH8Fm+M2B26/XZd9QfT9+F2NQtFq68UA6yV5Z4wvxDjp2ZEzVjd+6ODQHuxf5JzySyWtgg844sHdB47iSdC06PnDfjLGMp3AtYeCbQH1mNOjuV44vbiccoTP3gCLnm9BS9Ez4F0fM04kTnCLpOdphJub341gUUnuoFbo+CGrnM5NfwXnw1MUkl5H25BHwK4So/L9DwbBsktiFOuzC8L4DuWvJJSLZnKXIXmPGoRVqTe5zCMkQIDAQAB"; public static final String public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhpRgDGj3dk8kaNnnQIJ6YjbaEDBYEzDkv3qR3a55odU4/fJ3LFtGQfHM7LzQ3bpYaC8cZiYAu0ByPENW0G7HzVmxPfKdbLZtrRe+9kH8Fm+M2B26/XZd9QfT9+F2NQtFq68UA6yV5Z4wvxDjp2ZEzVjd+6ODQHuxf5JzySyWtgg844sHdB47iSdC06PnDfjLGMp3AtYeCbQH1mNOjuV44vbiccoTP3gCLnm9BS9Ez4F0fM04kTnCLpOdphJub341gUUnuoFbo+CGrnM5NfwXnw1MUkl5H25BHwK4So/L9DwbBsktiFOuzC8L4DuWvJJSLZnKXIXmPGoRVqTe5zCMkQIDAQAB";
public static final String private_key = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCGlGAMaPd2TyRo2edAgnpiNtoQMFgTMOS/epHdrnmh1Tj98ncsW0ZB8czsvNDdulhoLxxmJgC7QHI8Q1bQbsfNWbE98p1stm2tF772QfwWb4zYHbr9dl31B9P34XY1C0WrrxQDrJXlnjC/EOOnZkTNWN37o4NAe7F/knPJLJa2CDzjiwd0HjuJJ0LTo+cN+MsYyncC1h4JtAfWY06O5Xji9uJxyhM/eAIueb0FL0TPgXR8zTiROcIuk52mEm5vfjWBRSe6gVuj4Iauczk1/BefDUxSSXkfbkEfArhKj8v0PBsGyS2IU67MLwvgO5a8klItmcpcheY8ahFWpN7nMIyRAgMBAAECggEAPkrplnTzrlh9subByrNacKGRGBM4gVGNYDAc2m6LMGRgp/MWRHrPL3D7+MyBJVC+4SKFU6bdic8P0WMeCQZuB1gv2Uu2oH5kj81A//2U8NGbcOF6Dx496VBBRiifLXhVPF2itvyouYsaZyYrKe4FhMNQpMyP0UYv56vjWkgATqsbFmx2K8FLSGwpBvYys57gy4Evtep0yLTel6E4mnkQVdfTXnA7zylMn5Xz6Mk8u6H6o+Zhfxugw8/+CS9cDSCNxX0ZN8xgqONNtrHpAsM+AWbHuim89HnoVq2RrkHVnjCTXd2IG2Hs+lO7t7GYk3bqLwlpaupmR4rnOI+R+Rf3TQKBgQDpnMAY9l5Ro+r+SR7UjN+tSMBBX3S764NTAE0kNUSB3iBQnuLY60ziqbEbAupSFBnbkshWIVGaKdN6szH9lpoMSEyEWrN/EYY46WxFC6MT4iqvtl3Trqu/7h0DrjWsSY9e8ja8Zpv0lb7B8IEUiydeTfdkA+oTu4igz8gRs+BpuwKBgQCTegnoVlf15fLx8Czeo54YouHnD5fxzx5svsvXIFarMcQ89UMcUw/gBh3QGvx4BS6DUctitzmAeTQkQVtjVQZ3gNTMwILcB4NWibHursnsWQB6BIcRbww9FSIpARXPbXS2FbqjN+3aS8REEVJrIOPP2PQ62SeQSnA/eZBy1DjIIwKBgD4prtg1nq18v8hAbsrCXba/mCENJIPozH4mo2BSKFOiZtjtHpH4MvJRk0YLxYxnuuW5rkN1BEDQhmytCE1haMaB6pKBjCfw4tV8D4pj6VYeJZuyHE96uEsPMntLPQ8GV/c83qHNcAxqWGNE+yQbTzOB7aWYgQ4VJescvzEuuzWHAoGAZiUQ16t2IQqzyn7flRUeW1H1xWQ3iXQ7TnaYGNh9LvW5Rb9aTDP7ut6Bp7IJS9fK74mnpSfi2+kXBEWAVrx9TigdO/ParytE/JtCcl793IWInvqj0p9niqcokd3+jTzyqWtDaelDBP+VYM/elfSh1UQfZOMjU/064bwBIId9DKECgYBYXBe6oU7QiMYxa3YwAi9CcY9HXX6HRF4MpzOsOQ8wer8uJi6ca2th+jssz4SMeYZHnb7Ae+aORD7X+LefVuQiolwigAeTFgDihveb6WgxkKMarbqO8Ww7+laoGQjHvMQMTSkzt6KyhzeNu3F7Ma5HZkfCqwPAHzTOunGWUosRvg=="; public static final String private_key = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCGlGAMaPd2TyRo2edAgnpiNtoQMFgTMOS/epHdrnmh1Tj98ncsW0ZB8czsvNDdulhoLxxmJgC7QHI8Q1bQbsfNWbE98p1stm2tF772QfwWb4zYHbr9dl31B9P34XY1C0WrrxQDrJXlnjC/EOOnZkTNWN37o4NAe7F/knPJLJa2CDzjiwd0HjuJJ0LTo+cN+MsYyncC1h4JtAfWY06O5Xji9uJxyhM/eAIueb0FL0TPgXR8zTiROcIuk52mEm5vfjWBRSe6gVuj4Iauczk1/BefDUxSSXkfbkEfArhKj8v0PBsGyS2IU67MLwvgO5a8klItmcpcheY8ahFWpN7nMIyRAgMBAAECggEAPkrplnTzrlh9subByrNacKGRGBM4gVGNYDAc2m6LMGRgp/MWRHrPL3D7+MyBJVC+4SKFU6bdic8P0WMeCQZuB1gv2Uu2oH5kj81A//2U8NGbcOF6Dx496VBBRiifLXhVPF2itvyouYsaZyYrKe4FhMNQpMyP0UYv56vjWkgATqsbFmx2K8FLSGwpBvYys57gy4Evtep0yLTel6E4mnkQVdfTXnA7zylMn5Xz6Mk8u6H6o+Zhfxugw8/+CS9cDSCNxX0ZN8xgqONNtrHpAsM+AWbHuim89HnoVq2RrkHVnjCTXd2IG2Hs+lO7t7GYk3bqLwlpaupmR4rnOI+R+Rf3TQKBgQDpnMAY9l5Ro+r+SR7UjN+tSMBBX3S764NTAE0kNUSB3iBQnuLY60ziqbEbAupSFBnbkshWIVGaKdN6szH9lpoMSEyEWrN/EYY46WxFC6MT4iqvtl3Trqu/7h0DrjWsSY9e8ja8Zpv0lb7B8IEUiydeTfdkA+oTu4igz8gRs+BpuwKBgQCTegnoVlf15fLx8Czeo54YouHnD5fxzx5svsvXIFarMcQ89UMcUw/gBh3QGvx4BS6DUctitzmAeTQkQVtjVQZ3gNTMwILcB4NWibHursnsWQB6BIcRbww9FSIpARXPbXS2FbqjN+3aS8REEVJrIOPP2PQ62SeQSnA/eZBy1DjIIwKBgD4prtg1nq18v8hAbsrCXba/mCENJIPozH4mo2BSKFOiZtjtHpH4MvJRk0YLxYxnuuW5rkN1BEDQhmytCE1haMaB6pKBjCfw4tV8D4pj6VYeJZuyHE96uEsPMntLPQ8GV/c83qHNcAxqWGNE+yQbTzOB7aWYgQ4VJescvzEuuzWHAoGAZiUQ16t2IQqzyn7flRUeW1H1xWQ3iXQ7TnaYGNh9LvW5Rb9aTDP7ut6Bp7IJS9fK74mnpSfi2+kXBEWAVrx9TigdO/ParytE/JtCcl793IWInvqj0p9niqcokd3+jTzyqWtDaelDBP+VYM/elfSh1UQfZOMjU/064bwBIId9DKECgYBYXBe6oU7QiMYxa3YwAi9CcY9HXX6HRF4MpzOsOQ8wer8uJi6ca2th+jssz4SMeYZHnb7Ae+aORD7X+LefVuQiolwigAeTFgDihveb6WgxkKMarbqO8Ww7+laoGQjHvMQMTSkzt6KyhzeNu3F7Ma5HZkfCqwPAHzTOunGWUosRvg==";
@ -51,7 +61,17 @@ public class RSAUtils {
public static String decryptBASE64Str(String encryptString) { public static String decryptBASE64Str(String encryptString) {
try { try {
byte[] decodeByte = decryptBASE64(encryptString); byte[] decodeByte = decryptBASE64(encryptString);
return new String(decryptByPrivateKey(decodeByte, private_key)); return new String(decryptByPrivateKeyLongText(decodeByte, private_key));
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
public static String decryptBASE64StrByPublic(String encryptString) {
try {
byte[] decodeByte = decryptBASE64(encryptString);
return new String(decryptByPublicKeyLongText(decodeByte, public_key));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -61,7 +81,7 @@ public class RSAUtils {
public static String decryptBASE64StrLocal(String encryptString) { public static String decryptBASE64StrLocal(String encryptString) {
try { try {
byte[] decodeByte = decryptBASE64(encryptString); byte[] decodeByte = decryptBASE64(encryptString);
return new String(decryptByPrivateKey(decodeByte, private_key_local)); return new String(decryptByPrivateKeyLongText(decodeByte, private_key_local));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -71,7 +91,7 @@ public class RSAUtils {
public static String decryptBASE64StrMqtt(String encryptString) { public static String decryptBASE64StrMqtt(String encryptString) {
try { try {
byte[] decodeByte = decryptBASE64(encryptString); byte[] decodeByte = decryptBASE64(encryptString);
return new String(decryptByPrivateKey(decodeByte, private_key_mqtt)); return new String(decryptByPrivateKeyLongText(decodeByte, private_key_mqtt));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -80,7 +100,7 @@ public class RSAUtils {
public static String encryptBASE64Str(String text) { public static String encryptBASE64Str(String text) {
try { try {
return encryptBASE64(encryptByPublicKey(text.getBytes(), public_key)); return encryptBASE64(encryptByPublicKeyLongText(text.getBytes(), public_key));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -89,7 +109,7 @@ public class RSAUtils {
public static String encryptBASE64StrLocal(String text) { public static String encryptBASE64StrLocal(String text) {
try { try {
return encryptBASE64(encryptByPublicKey(text.getBytes(), public_key_local)); return encryptBASE64(encryptByPublicKeyLongText(text.getBytes(), public_key_local));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -98,7 +118,7 @@ public class RSAUtils {
public static String encryptBASE64StrMqtt(String text) { public static String encryptBASE64StrMqtt(String text) {
try { try {
return encryptBASE64(encryptByPublicKey(text.getBytes(), public_key_mqtt)); return encryptBASE64(encryptByPublicKeyLongText(text.getBytes(), public_key_mqtt));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -128,6 +148,44 @@ public class RSAUtils {
return cipher.doFinal(data); return cipher.doFinal(data);
} }
/**
*
* @param encryptedData
* @param privateKey
* @return
* @throws Exception
*/
public static byte[] decryptByPrivateKeyLongText(byte[] encryptedData, String privateKey) throws Exception {
byte[] keyBytes = decryptBASE64(privateKey);
PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance(RSA);
Key privateK = keyFactory.generatePrivate(pkcs8KeySpec);
Cipher cipher = Cipher.getInstance(ECB_None_PKCS1_PADDING);
cipher.init(Cipher.DECRYPT_MODE, privateK);
int inputLen = encryptedData.length;
ByteArrayOutputStream out = new ByteArrayOutputStream();
int offSet = 0;
byte[] cache;
int i = 0;
// 对数据分段解密
while (inputLen - offSet > 0) {
if (inputLen - offSet > MAX_DECRYPT_BLOCK) {
cache = cipher.doFinal(encryptedData, offSet, MAX_DECRYPT_BLOCK);
} else {
cache = cipher.doFinal(encryptedData, offSet, inputLen - offSet);
}
out.write(cache, 0, cache.length);
i++;
offSet = i * MAX_DECRYPT_BLOCK;
}
byte[] decryptedData = out.toByteArray();
out.close();
return decryptedData;
}
/** /**
* <br> * <br>
* *
@ -137,8 +195,7 @@ public class RSAUtils {
* @return * @return
* @throws Exception * @throws Exception
*/ */
public static byte[] decryptByPublicKey(byte[] data, String key) public static byte[] decryptByPublicKey(byte[] data, String key) throws Exception {
throws Exception {
// 对密钥解密 // 对密钥解密
byte[] keyBytes = decryptBASE64(key); byte[] keyBytes = decryptBASE64(key);
// 取得公钥 // 取得公钥
@ -151,6 +208,68 @@ public class RSAUtils {
return cipher.doFinal(data); return cipher.doFinal(data);
} }
/**
*
* @param encryptedData
* @param publicKey
* @return
* @throws Exception
*/
public static byte[] decryptByPublicKeyLongText(byte[] encryptedData, String publicKey) throws Exception {
byte[] keyBytes = decryptBASE64(publicKey);
X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance(RSA);
Key publicK = keyFactory.generatePublic(x509KeySpec);
Cipher cipher = Cipher.getInstance(ECB_None_PKCS1_PADDING);
cipher.init(Cipher.DECRYPT_MODE, publicK);
int inputLen = encryptedData.length;
ByteArrayOutputStream out = new ByteArrayOutputStream();
int offSet = 0;
byte[] cache;
int i = 0;
// 对数据分段解密
while (inputLen - offSet > 0) {
if (inputLen - offSet > MAX_DECRYPT_BLOCK) {
cache = cipher.doFinal(encryptedData, offSet, MAX_DECRYPT_BLOCK);
} else {
cache = cipher.doFinal(encryptedData, offSet, inputLen - offSet);
}
out.write(cache, 0, cache.length);
i++;
offSet = i * MAX_DECRYPT_BLOCK;
}
byte[] decryptedData = out.toByteArray();
out.close();
return decryptedData;
}
/** /**
* <br> * <br>
* *
@ -160,8 +279,7 @@ public class RSAUtils {
* @return * @return
* @throws Exception * @throws Exception
*/ */
public static byte[] encryptByPublicKey(byte[] data, String key) public static byte[] encryptByPublicKey(byte[] data, String key) throws Exception {
throws Exception {
// 对公钥解密 // 对公钥解密
byte[] keyBytes = decryptBASE64(key); byte[] keyBytes = decryptBASE64(key);
// 取得公钥 // 取得公钥
@ -174,6 +292,69 @@ public class RSAUtils {
return cipher.doFinal(data); return cipher.doFinal(data);
} }
/**
*
* @param data
* @param publicKey
* @return
* @throws Exception
*/
public static byte[] encryptByPublicKeyLongText(byte[] data, String publicKey) throws Exception {
byte[] keyBytes = decryptBASE64(publicKey);
X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance(RSA);
Key publicK = keyFactory.generatePublic(x509KeySpec);
// 对数据加密
Cipher cipher = Cipher.getInstance(ECB_None_PKCS1_PADDING);
cipher.init(Cipher.ENCRYPT_MODE, publicK);
int inputLen = data.length;
ByteArrayOutputStream out = new ByteArrayOutputStream();
int offSet = 0;
byte[] cache;
int i = 0;
// 对数据分段加密
while (inputLen - offSet > 0) {
if (inputLen - offSet > MAX_ENCRYPT_BLOCK) {
cache = cipher.doFinal(data, offSet, MAX_ENCRYPT_BLOCK);
} else {
cache = cipher.doFinal(data, offSet, inputLen - offSet);
}
out.write(cache, 0, cache.length);
i++;
offSet = i * MAX_ENCRYPT_BLOCK;
}
byte[] encryptedData = out.toByteArray();
out.close();
return encryptedData;
}
/** /**
* <br> * <br>
* *
@ -183,8 +364,7 @@ public class RSAUtils {
* @return * @return
* @throws Exception * @throws Exception
*/ */
public static byte[] encryptByPrivateKey(byte[] data, String key) public static byte[] encryptByPrivateKey(byte[] data, String key) throws Exception {
throws Exception {
// 对密钥解密 // 对密钥解密
byte[] keyBytes = decryptBASE64(key); byte[] keyBytes = decryptBASE64(key);
// 取得私钥 // 取得私钥
@ -197,6 +377,67 @@ public class RSAUtils {
return cipher.doFinal(data); return cipher.doFinal(data);
} }
/**
*
* @param data
* @param privateKey
* @return
* @throws Exception
*/
public static byte[] encryptByPrivateKeyLongText(byte[] data, String privateKey) throws Exception {
byte[] keyBytes = decryptBASE64(privateKey);
PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance(RSA);
Key privateK = keyFactory.generatePrivate(pkcs8KeySpec);
Cipher cipher = Cipher.getInstance(ECB_None_PKCS1_PADDING);
cipher.init(Cipher.ENCRYPT_MODE, privateK);
int inputLen = data.length;
ByteArrayOutputStream out = new ByteArrayOutputStream();
int offSet = 0;
byte[] cache;
int i = 0;
// 对数据分段加密
while (inputLen - offSet > 0) {
if (inputLen - offSet > MAX_ENCRYPT_BLOCK) {
cache = cipher.doFinal(data, offSet, MAX_ENCRYPT_BLOCK);
} else {
cache = cipher.doFinal(data, offSet, inputLen - offSet);
}
out.write(cache, 0, cache.length);
i++;
offSet = i * MAX_ENCRYPT_BLOCK;
}
byte[] encryptedData = out.toByteArray();
out.close();
return encryptedData;
}
/** /**
* *
* *
@ -233,7 +474,7 @@ public class RSAUtils {
public static Map<String, Object> initKey() throws Exception { public static Map<String, Object> initKey() throws Exception {
KeyPairGenerator keyPairGen = KeyPairGenerator KeyPairGenerator keyPairGen = KeyPairGenerator
.getInstance(RSA); .getInstance(RSA);
keyPairGen.initialize(2048); keyPairGen.initialize(DEFAULT_KEY_SIZE);
KeyPair keyPair = keyPairGen.generateKeyPair(); KeyPair keyPair = keyPairGen.generateKeyPair();
// 公钥 // 公钥
RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic(); RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();

Loading…
Cancel
Save