|  |  | 
 |  |  | package com.dayu.recharge.tools; | 
 |  |  |  | 
 |  |  | import android.app.Activity; | 
 |  |  | import android.util.Base64; | 
 |  |  |  | 
 |  |  | import java.nio.charset.StandardCharsets; | 
 |  |  | 
 |  |  |  */ | 
 |  |  | public class BaseNFCHelper { | 
 |  |  |     /** | 
 |  |  |      * 默认密码(白卡密码) | 
 |  |  |      * 默认密码(白卡密码)ffffffffffff | 
 |  |  |      */ | 
 |  |  |     public byte[] defauleKey; | 
 |  |  |  | 
 |  |  | 
 |  |  |      * 公司密码 | 
 |  |  |      */ | 
 |  |  |     public byte[] companyKey; | 
 |  |  |  | 
 |  |  |     //密码a区 | 
 |  |  |     String companyKeyA; | 
 |  |  |     //密码B区 | 
 |  |  |     String companyKeyB; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public BaseNFCHelper() { | 
 |  |  |     static { | 
 |  |  |         System.loadLibrary("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"); | 
 |  |  |             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}; | 
 |  |  |             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); | 
 |  |  |             //初始密码 | 
 |  |  | //             byte[] encryptedBytes2 = Base64.decode("aYC9feYEOFOQHuzflLIXSw==", Base64.DEFAULT); | 
 |  |  |             byte[] encryptedBytes2 = Base64.decode("qeg4DUWf0ni9JfRWtD2krA==", 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); | 
 |  |  |             companyKeyB = new String(decryptedBytes3, StandardCharsets.UTF_8); | 
 |  |  |             //decryptedBytes3 对应202311202048 | 
 |  |  |             companyKeyB = new String(decryptedBytes2, StandardCharsets.UTF_8); | 
 |  |  |  | 
 |  |  |         } catch (NoSuchAlgorithmException e) { | 
 |  |  |             throw new RuntimeException(e); | 
 |  |  |         } catch (NoSuchPaddingException e) { | 
 |  |  |             throw new RuntimeException(e); | 
 |  |  |         } catch (InvalidKeyException e) { | 
 |  |  |             throw new RuntimeException(e); | 
 |  |  |         } catch (BadPaddingException e) { | 
 |  |  |             throw new RuntimeException(e); | 
 |  |  |         } catch (IllegalBlockSizeException e) { | 
 |  |  |             throw new RuntimeException(e); | 
 |  |  |  | 
 |  |  |         } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | | 
 |  |  |                  BadPaddingException | IllegalBlockSizeException e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | } |