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(); } } }