package com.dayu.qiheonlinelibrary.tools;
|
|
import android.app.Activity;
|
import android.util.Base64;
|
|
import com.dayu.baselibrary.tools.HexUtil;
|
|
import java.nio.charset.StandardCharsets;
|
import java.security.InvalidKeyException;
|
import java.security.NoSuchAlgorithmException;
|
|
import javax.crypto.BadPaddingException;
|
import javax.crypto.Cipher;
|
import javax.crypto.IllegalBlockSizeException;
|
import javax.crypto.NoSuchPaddingException;
|
import javax.crypto.spec.SecretKeySpec;
|
|
/**
|
* Copyright (C), 2023,
|
* Author: zuo
|
* Date: 2023-11-09 11:52
|
* Description:
|
*/
|
public class BaseNFCHelper {
|
/**
|
* 默认密码(白卡密码)ffffffffffff
|
*/
|
public byte[] defauleKey;
|
|
/**
|
* 公司密码
|
*/
|
public byte[] companyKey;
|
|
//齐河欧标密码
|
public byte[] companyKey2;
|
//密码a区
|
String companyKeyA;
|
//密码B区
|
String companyKeyB;
|
|
|
static {
|
System.loadLibrary("qiheonline-native-lib");
|
}
|
|
public native String getSafeKey(Object object);
|
|
public BaseNFCHelper(Activity activity) {
|
// 解密字符串
|
try {
|
//初始密码
|
byte[] encryptedBytes = Base64.decode("orDiGzvueQqPpU+VQ3NEzQ==", Base64.DEFAULT);
|
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
|
String data = getSafeKey(activity);
|
byte[] encodedKey = HexUtil.hexToByteArray(data);
|
// byte[] encodedKey = {-117, -104, -100, 84, 111, -102, -29, -21, 72, -82, -105, 123, 77, 79, 17, -55, -102, -28, 50, 23, 67, 98, 0, -96, -10, -48, -60, 81, 113, 80, -32, -26};
|
cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(encodedKey, "AES"));
|
byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
|
String decryptedText = new String(decryptedBytes, StandardCharsets.UTF_8);
|
defauleKey = HexUtil.hexToByteArray(decryptedText);
|
//初始密码
|
// byte[] encryptedBytes2 = Base64.decode("aYC9feYEOFOQHuzflLIXSw==", Base64.DEFAULT);
|
//010203:qeg4DUWf0ni9JfRWtD2krA==
|
byte[] encryptedBytes2 = Base64.decode("Zro4j8QP6yjYEA6HtSSNOw==", Base64.DEFAULT);
|
byte[] decryptedBytes2 = cipher.doFinal(encryptedBytes2);
|
//decryptedBytes2 对应010203040506
|
companyKeyA = new String(decryptedBytes2, StandardCharsets.UTF_8);
|
companyKey = HexUtil.hexToByteArray(companyKeyA);
|
|
//修改后的密码
|
byte[] encryptedBytes3 = Base64.decode("n+SSZFb4DHsreVav/Z5ftg==", Base64.DEFAULT);
|
byte[] decryptedBytes3 = cipher.doFinal(encryptedBytes3);
|
//decryptedBytes3 对应202311202048
|
companyKeyB = new String(decryptedBytes2, StandardCharsets.UTF_8);
|
|
//010203:qeg4DUWf0ni9JfRWtD2krA==
|
byte[] encryptedBytes4 = Base64.decode("qeg4DUWf0ni9JfRWtD2krA==", Base64.DEFAULT);
|
byte[] decryptedBytes4 = cipher.doFinal(encryptedBytes4);
|
String companyKeyA = new String(decryptedBytes4, StandardCharsets.UTF_8);
|
companyKey2 = HexUtil.hexToByteArray(companyKeyA);
|
} catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException |
|
BadPaddingException | IllegalBlockSizeException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|