添加备注,SSH密码加密
This commit is contained in:
@@ -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==
|
||||
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.zhidao.support.adas.high.bean.record;
|
||||
|
||||
/**
|
||||
* @author song kenan
|
||||
* @des
|
||||
* @des 同步采集类型
|
||||
* @date 2021/8/25
|
||||
*/
|
||||
|
||||
|
||||
@@ -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)));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user