添加备注,SSH密码加密

This commit is contained in:
xinfengkun
2022-01-20 14:30:48 +08:00
parent 0776ea0b6e
commit 05d1d13bd4
4 changed files with 138 additions and 7 deletions

View File

@@ -1,3 +1,14 @@
#### 说明
# ADAS LIB
## 与工控机交互LIB
## 与工控机交互LIB
RSA密钥
privateBase64=MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA127FFvuPolaxYTBg5wkyDIrEbcNKXoIjf0bK7QUQ991Lsbv5Ktv/XM2F6qJFssVF1KTkStVBSQGxJB1eZLwJEwIDAQABAkBM39AgpV/Z1Amz3qmVh+h+JT521ItDMjksf7yF25r0dzGjOfGLQmMAqQXT68B+cQX5HSoFMwk/rE1hnXgifyNBAiEA6uNE2TfPj51mPOZztGy1Q8p4exWohfotiy64g/CyVeMCIQDqy9e7bGeZEi6p1zemEgFVtwgZZvLn/BOP4UO7NjJnEQIhAJBnprUwha/SYb+BIpNC3fHOcWGigBfWJdfSomejO9BnAiEApfojLqKbOWHZCsbQ19yyhN02JH7aB5PyYCtlrdnKF4ECIHR1P2LOQLddXO8PwgoF6gtCTO2sxIqdvu8fUruWyouQ
publicBase64=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANduxRb7j6JWsWEwYOcJMgyKxG3DSl6CI39Gyu0FEPfdS7G7+Srb/1zNheqiRbLFRdSk5ErVQUkBsSQdXmS8CRMCAwEAAQ==
工控机SSH
账号:titan
密码:mogo@ZHIDAO10
加密后的密码:Lz71dnr3eEbcXbuRqSBuLPTk9N7vfqL1lkV1FvAzrLE45OslTvAmm0ekjXIuvOz3jw4hh/saV5pxc3ywNubnjQ==

View File

@@ -9,7 +9,6 @@ import android.util.Log;
import com.google.gson.Gson;
import com.google.protobuf.InvalidProtocolBufferException;
import com.jcraft.jsch.JSchException;
import com.zhidao.support.adas.high.bean.AdasConfig;
import com.zhidao.support.adas.high.bean.AutopilotControl;
import com.zhidao.support.adas.high.bean.AutopilotSpeedParam;
@@ -26,6 +25,7 @@ import com.zhidao.support.adas.high.common.AppPreferenceHelper;
import com.zhidao.support.adas.high.common.Constants;
import com.zhidao.support.adas.high.common.CupidLogUtils;
import com.zhidao.support.adas.high.common.MgContextUtils;
import com.zhidao.support.adas.high.common.RSATool;
import com.zhidao.support.adas.high.common.SSH;
import com.zhidao.support.adas.high.common.ThreadPoolManager;
import com.zhidao.support.adas.high.msg.MyMessageFactory;
@@ -39,9 +39,9 @@ import com.zhidao.support.adas.high.udp.CupidUdpConstract;
import com.zhidao.support.adas.high.udp.IConnectRtpListener;
import com.zhidao.support.adas.high.udp.IGetH264Data;
import org.apache.commons.net.util.Base64;
import org.json.JSONObject;
import java.io.IOException;
import java.util.List;
import mogo.webproto.WebsocketHeader;
@@ -262,12 +262,15 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
@Override
public void run() {
ssh = new SSH();
String encodePwd = "Lz71dnr3eEbcXbuRqSBuLPTk9N7vfqL1lkV1FvAzrLE45OslTvAmm0ekjXIuvOz3jw4hh/saV5pxc3ywNubnjQ==";
String privateKey = "MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA127FFvuPolaxYTBg5wkyDIrEbcNKXoIjf0bK7QUQ991Lsbv5Ktv/XM2F6qJFssVF1KTkStVBSQGxJB1eZLwJEwIDAQABAkBM39AgpV/Z1Amz3qmVh+h+JT521ItDMjksf7yF25r0dzGjOfGLQmMAqQXT68B+cQX5HSoFMwk/rE1hnXgifyNBAiEA6uNE2TfPj51mPOZztGy1Q8p4exWohfotiy64g/CyVeMCIQDqy9e7bGeZEi6p1zemEgFVtwgZZvLn/BOP4UO7NjJnEQIhAJBnprUwha/SYb+BIpNC3fHOcWGigBfWJdfSomejO9BnAiEApfojLqKbOWHZCsbQ19yyhN02JH7aB5PyYCtlrdnKF4ECIHR1P2LOQLddXO8PwgoF6gtCTO2sxIqdvu8fUruWyouQ";
try {
ssh.connect(ipAddr, 22, "titan", "mogo@ZHIDAO10");
SSHResult result = ssh.exec(cmd, "mogo@ZHIDAO10");
String pwd = RSATool.decodeByPrivateKey(encodePwd, Base64.decodeBase64(privateKey));
ssh.connect(ipAddr, 22, "titan", pwd);
SSHResult result = ssh.exec(cmd, pwd);
if (mAdasListener != null)
mAdasListener.onSSHResult(result);
} catch (JSchException | IOException e) {
} catch (Exception e) {
if (mAdasListener != null)
mAdasListener.onSSHResult(new SSHResult(SSHResult.RESULT_CODE.ERROR, cmd, e.getMessage()));
e.printStackTrace();
@@ -644,6 +647,15 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
// return sendWsMessage(Constants.QUERY_ROUTES);
// }
/**
* 主动录制Bag包
*
* @param isRecord
* @param type
* @param id
* @param duration
* @return
*/
private boolean recordBag(boolean isRecord, int type, int id, int duration) {
if (recordDataParam == null) {
recordDataParam = new RecordDataParam();

View File

@@ -2,7 +2,7 @@ package com.zhidao.support.adas.high.bean.record;
/**
* @author song kenan
* @des
* @des 同步采集类型
* @date 2021/8/25
*/

View File

@@ -0,0 +1,108 @@
package com.zhidao.support.adas.high.common;
import android.util.Log;
import org.apache.commons.net.util.Base64;
import java.nio.charset.StandardCharsets;
import java.security.Key;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.HashMap;
import java.util.Map;
import javax.crypto.Cipher;
public class RSATool {
private static final String KEY_ALGORITHM = "RSA";
private static final String ECB_PKCS1_PADDING = "RSA/ECB/PKCS1Padding";
public static Map<String, Object> initKey() throws Exception {
//实例化密钥生成器
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM); //加密方式
//初始化密钥生成器
keyPairGenerator.initialize(512, new SecureRandom()); //长度
//生成密钥对
KeyPair keyPair = keyPairGenerator.generateKeyPair();
//甲方公钥
RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
//甲方私钥
RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
//将密钥存储在map中
Map<String, Object> keyMap = new HashMap<String, Object>();
keyMap.put("PUBLIC_KEY", publicKey);
keyMap.put("PRIVATE_KEY", privateKey);
return keyMap;
}
public static void getBase64() {
try {
Map<String, Object> map = initKey();
byte[] privateKey = ((Key) map.get("PRIVATE_KEY")).getEncoded();
byte[] publicKey = ((Key) map.get("PUBLIC_KEY")).getEncoded();
// 将公私钥转为base64-法1
// String privateBase64 = new String(Base64.encodeBase64(privateKey));
// String publicBase64 = new String(Base64.encodeBase64(publicKey));
// 将公私钥转为base64-法2
String privateBase64 = Base64.encodeBase64String(privateKey);
String publicBase64 = Base64.encodeBase64String(publicKey);
Log.i("RSATool", "privateBase64=" + privateBase64);
Log.i("RSATool", "publicBase64=" + publicBase64);
String data = "mogo@ZHIDAO10";
String encryptData = encryptByPublicKey(data, publicKey);
Log.i("RSATool", "encryptData=" + encryptData);
String decodeData = decodeByPrivateKey(encryptData, Base64.decodeBase64(privateBase64));
Log.i("RSATool", "decodeData=" + decodeData);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 公钥加密
*
* @param data 待加密数据
* @param key 密钥
* @return String 加密数据 Base64类型
*/
public static String encryptByPublicKey(String data, byte[] key) throws Exception {
//实例化密钥工厂
KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
//初始化公钥
//密钥材料转换
X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(key);
//产生公钥
PublicKey pubKey = keyFactory.generatePublic(x509KeySpec);
//数据加密
Cipher cipher = Cipher.getInstance(ECB_PKCS1_PADDING);
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
return Base64.encodeBase64String(cipher.doFinal(data.getBytes(StandardCharsets.UTF_8)));
}
/**
* 私钥解密
*
* @param data 待解密数据 Base64类型
* @param key 密钥
* @return String 解密数据
*/
public static String decodeByPrivateKey(String data, byte[] key) throws Exception {
//取得私钥
PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(key);
KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
//生成私钥
PrivateKey privateKey = keyFactory.generatePrivate(pkcs8KeySpec);
//数据解密
Cipher cipher = Cipher.getInstance(ECB_PKCS1_PADDING);
cipher.init(Cipher.DECRYPT_MODE, privateKey);
return new String(cipher.doFinal(Base64.decodeBase64(data)));
}
}