前言

最近由于工作业务的需要,需要对指定的字段信息进行非对称加解密;由于需要加密的内容过于庞大;自己执行程序会出现:Data must not be longer than 117 bytes 的异常错误;现在自己将自己的解决方法总结如下;

一、配置文件准备

spring:
  profiles:
    active: dev
---
spring:
  profiles: dev

salary:
  rsa-key: MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQCe8a/Aq4h9l1aKU8j6dP89qzU3pvcmezsP2grr3yHWPzLOakP0qczmEcKCXi2gRWDhHgoSwlNOZR70dTV0FNBvL1OcEfnDlR5CCD8zHmwnfDkPIA+7aeM6FT/lqhIiejClrkkuhtrRgjNBaf75r+OEmznRP5a37HLdYRsXdBg39jubRk3ULvQpeVfbE4sjwEvzQEyosXdDV0iS/EubFqUlmISe+QAtaXLykRGu+/PVhfqspY6jXC1LkAlbXGty2c5/ixpCL38m/Q9GeS4VGj0EHVFkD+9XmQ+376zOsKLuoNEKiQChB+fx6cHVQk0QP+0VbCrGnNn6Jz4L4V8uvFnudehxYxBZKiOsiFjv7ZNhPd/A7hm8mgqWDvVHof6BKvanSoHJ74Qsh4SvzdRYyG8qtwA/QWklxalaklowoajnKNR7i7sUEoXmP47QYkJN+TEDxrD4pNn8+fKgQjrk8YPuLhdBau9M+TIxx8zL391d3x5+rOHmSDeQBq4e9MEtxKmNGoIVPenPpsrRrN6CsY+UgQ9rdblTNnQySG0z7qdus4qDO6PbuCXAdEE1uGzxuWXNUZTj5nG/3yVSnxW8+xUzB44cHhnP+D50tqYdwwDTEs88dklHC8FuybqtZ33pZybRjdnLIgYyyPQBY8GMy9sdwEIkMVPEgxn0Y4Agy5T6VwIDAQABAoICAHuGj7WoWhJpLFui0/46MSfHSDuxKkEg4nzmUziPGCf+w8iB88BQuqpPQSC6erElWi56fw+nMMEre4w3D0zg5ECUwmD342lqGbLt39glm55wP5QOsctQdsTsQNWHgEKFPgt1UPC045iRnK4I5507YhHr5VpHFiZov7hnQHvQwQW0+wwo7lGqEB2vbWUYYjltuFkbLrin+209h2ycYVHtnnmCeAdosweX/TqhHeIlc5INZw0IObuh5p3kGjGDuQnwVjjvbX/kk+hEIbv+b5783lC1TEz8yWEF1p53yZB03JuiJfQPF4sOrudmaTsJJQUs+V99yhzDR/DO0LzA8Y1L2oNkaQ/iKeS3MauAQjGbGNaXawNNYT7ZJ12wCUjDSEWg8FJD/wbd4zFpso4r+1zl8L/1Ongw+iKKsqFtlwqaE/4zEUfTr+Vm1ABTLds1VM7VBXdwAXVuMT3W6Pafmt78bzQvPuFYHDJpfvKu2FPJs29bBNY6ANdDwI+r+fRJ0zsClxjBtVYyI56n0Z5jeMekoiQzXTKwWUfQwmvqzovHBHYbpyOC5Oo9Ltc5FHrbhPHitxQvEhc5o7pyuow0GKHOzp8MryeFyJMHjospUxc5t9AWw4vpkyipYi2d0Qu9Yq+RgTkyhkvYfku+SEbZuDwwjjbeBQ3oFZW/QllO9XPyimPhAoIBAQD8h5ZxXLqn7hN0N0KZA/Zi0I4Y3MRmPAx1MMq72s6S8eHcNUD3Fc4jNVNevpScD5Ey7B9GtxT91gcI2v65ZL9plNASyzxY9IB81ejAvo9FT9pr0KlngzhZjC8x8COVLOLtEBQwFnRQXC/gRWP9gjPV3RJCwmUGYMlurd3SSFUIjg4lqNnHWR9GowqqcHKl6oF1XoXDQYYNKqL/D0R1MB3WcLinSt1nKhclhFeE9O/mIM+JvkPPgIS8qGp4AlBPgKN6aeYAjMYAQu7hKzO4BcgKgyWjq6jTNbcym4oBHZ1YG7u9w5lKqDE57R876EyzGjkF0v+5U6SQBvabQOeWMsLnAoIBAQChINwsp7pO48r6riufWRc1TUx+rIuVfXh1kaODNA2ppVPU9TXY7nr00uM6q0Q6x8NssczRgQ6wxPc+pOfYcNOrFg7vrrj++lgRff2axPWN9x+v7NzhRoXwW62H9/h8lQtP4+UNtDUojiG4q2UzN3e/yAygNbRPedgRMyxz8b94DAS64sXDEKb9TbL4M2QhxXL1U8/Cj+LdP+fuxvcZ94TQY2JgO9XwtzPLj2f9VmUTFRtsqVpP5QB02PEvwH9dk45kzhnvDEX8avNFL7gnV+X2Eak8UlMAO5/d23FGGxJC63ymf1Iw50aXPqDioyTHwQrJGdz0gyiyJm9VNAaKEY8RAoIBAQDeFNOuYFFay9nZ85si/EQbRLQik0w5aIfALCeuq0/OFOB/i2nVohyGBCiMgugoktwrv1IGG45faXEITaeEHWDkllWioY8x39x7bJdjonJXD1HUTU4d1V2iCtGahkiUsUPkHabTX3vtDBWikwPLd0zkwKWFhnXX9RhQuKEChFAb1OoGHodfdDY4JbyEhZ2d4iz1rinOvHoKbDuqOaAHu0gSRVFu9jzdtDtk6A0bxViQtrwts+DoxGp3i1kOr2I3eLbMOgNm6mZa5oI0DY1PQe5ZqFpapOU00eGJpRXpw0STrtgdm73c1StteOZmBfYl8GLDh3sTXca0TxtjD+JayctzAoIBAAriWF0f22L22kBCwama8AlmtlMcPrWTay6t7tivDHk4NMh+4+tKeL3O/RB6fzplQhs2i3pfeGmSdI0jwJGLVZEKBWpFaDO5H3fXBemNgnTbi6Vrn6QMCoIo/zjfFEb+HmyAHXnmgWzC5R4/Xa+vAITQ86Fi31I7DdBjn44Zd3CZhzxEk01Q86bKt9syRYJOfyx5Q+CFrbJ6XaVwhUKYyLz26a9Me3AuP+5xOnoPevZmB5s4eWRKONSrzucF3tSoYgcHMRNHxfZ+Fv7GcW8e7ebIXKE5gmfSn0LyTt2IeJxSofHxSdEJ3mfbEC0fDh38OUlKWPWfYoFePUkJIaPz+bECggEAPUoyktZOL373+TsLwxP98LpKQmWeZ2onnBaWYK3gWqGtRf6HNq+pTRwOOhwiK+P+vRocwFoCJUc/kbWOCJogW3CDLjBvX5nqBXY24mMbVFeZTQFhZqNVkpnUrSAEDyl20lDhGBuYqrCsEv6rshs0NtNoREeBvn4RVRFhiadSxJXyMAdTyGG2d92Upp9KloamdRlGHlxL9BTdmb47+PTpOOM+rSaLcoqjN7uw7dhMHtqZbQ8vvsgJalmWJLXicDwv50RI4fKTPB+IVWSi1T3GkrbNq1BrwtONbUSYTME74XcW5HXG3jth7uGM7BiVWEVrDtcpgDaOte7v0LgVeKEprg==

---
spring:
  profiles: prod

salary:
  rsa-key: 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

二、对配置文件中的rsa-key属性获取

@ConfigurationProperties("salary")
@Component
public class RsaConfig {

    private String rsaKey;

    public String getRsaKey() {
        return rsaKey;
    }

    public void setRsaKey(String rsaKey) {
        this.rsaKey = rsaKey;
    }
}

三、RSAUtil工具类的编写

import com.tencent.citybase.generated.bridge.utils.SpringContextUtils;
import com.tencent.citybase.generated.extend.config.RsaConfig;
import org.apache.commons.codec.binary.Base64;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import javax.crypto.Cipher;
import java.io.ByteArrayOutputStream;
import java.security.*;
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;

/**
 * @Description RAS加密工具类
 * @Author songwp
 * @Date 2022/8/8 20:34
 * @Version 1.0.0
 **/
public class RSAUtil {
  protected static Logger log = LoggerFactory.getLogger(RSAUtil.class);

  private static final String KEY_ALGORITHM = "RSA";
  //密钥长度
  private static final int KEY_SIZE = 4096;

  //最大加密长度
  private static final int MAX_ENCRYPT_BLOCK = KEY_SIZE / 8 -11;
  //最大解密长度
  private static final int MAX_DECRYPT_BLOCK = KEY_SIZE / 8;

  private static String getRsaKey() {
      return SpringContextUtils.getBean(RsaConfig.class).getRsaKey();
  }

  private static byte[] decryptBASE64(String src) {
      BASE64Decoder decoder = new BASE64Decoder();
      try {
          return decoder.decodeBuffer(src);
      } catch (Exception ex) {
          return null;
      }
  }

/**
 * 生成公私钥
 *
 * @param keySize 密钥长度
 */
public static Map<String, String> genKeyPair(int keySize) {
    Map<String, String> keyMap = new HashMap<>();
    try {
        //创建密钥对生成器
        KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
        kpg.initialize(keySize);
        //生成密钥对
        KeyPair keyPair = kpg.generateKeyPair();
        //公钥
        PublicKey publicKey = keyPair.getPublic();
        //私钥
        PrivateKey privateKey = keyPair.getPrivate();
        keyMap.put("publicKey", Base64.encodeBase64String(publicKey.getEncoded()));
        keyMap.put("privateKey", Base64.encodeBase64String(privateKey.getEncoded()));
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
        log.error("生成公私钥信息失败:"+e.getMessage());
    }
    return keyMap;
}


/**
 * 该base64方法会自动换行
 * @param src
 * @return
 */
private static String encryptBASE64(byte[] src) {
    BASE64Encoder encoder = new BASE64Encoder();

    return encoder.encode(src);
}
/**
 * 公钥分段加密
 * @param data 源数据
 * @param publicKey 公钥(BASE64编码)
 * @param length 段长
 * @return
 * @throws Exception
 */
private static byte[] encryptByPublicKey(byte[] data, String publicKey,int length) {
    ByteArrayOutputStream out = null;
    byte[] encryptData = null;
    try {
        byte[] keyBytes = decryptBASE64(publicKey);
        X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        Key publicK = keyFactory.generatePublic(x509KeySpec);
        // 对数据加密
        Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
        cipher.init(Cipher.ENCRYPT_MODE, publicK);
        int inputLen = data.length;
        out = new ByteArrayOutputStream();
        int offSet = 0;
        byte[] cache;
        int i = 0;
        // 对数据分段加密
        while (inputLen - offSet > 0) {
            if (inputLen - offSet > length) {
                cache = cipher.doFinal(data, offSet, length);
            } else {
                cache = cipher.doFinal(data, offSet, inputLen - offSet);
            }
            out.write(cache, 0, cache.length);
            i++;
            offSet = i * length;
        }
        encryptData = out.toByteArray();
    } catch (Exception e) {
        e.printStackTrace();
        log.error("公钥分段加密失败:"+e.getMessage());
    } finally {
        try {
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return encryptData;
}

/** *//**
 * <P>
 * 私钥解密
 * </p>
 *
 * @param data 已加密数据
 * @param privateKey 私钥(BASE64编码)
 * @return
 * @throws Exception
 */
private static byte[] decryptByPrivateKey(byte[] data, String privateKey,int length){
    ByteArrayOutputStream out = null;
    byte[] decryptedData = null;
    try {
        byte[] keyBytes =  decryptBASE64(privateKey);
        PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);
        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
        Key privateK = keyFactory.generatePrivate(pkcs8KeySpec);
        Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
        cipher.init(Cipher.DECRYPT_MODE, privateK);
        int inputLen = data.length;
        out = new ByteArrayOutputStream();
        int offSet = 0;
        byte[] cache;
        int i = 0;
        // 对数据分段解密
        while (inputLen - offSet > 0) {
            if (inputLen - offSet > length) {
                cache = cipher.doFinal(data, offSet, length);
            } else {
                cache = cipher.doFinal(data, offSet, inputLen - offSet);
            }
            out.write(cache, 0, cache.length);
            i++;
            offSet = i * length;
        }
        decryptedData = out.toByteArray();
    } catch (Exception e) {
        e.printStackTrace();
        log.error("私钥解密失败:"+e.getMessage());
    } finally {
        try {
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return decryptedData;
}

/**
 * 加密
 * @param data
 * @param publicKey
 * @return
 */
public static String encryptByPublicKey(String data, String publicKey) {
    //log.info("公钥分段加密内容:"+new String(encryptByPublicKey(data.getBytes(), publicKey, MAX_ENCRYPT_BLOCK)).replaceAll("[+]", "@"));
    return encryptBASE64(encryptByPublicKey(data.getBytes(), publicKey, MAX_ENCRYPT_BLOCK)).replaceAll("[+]", "@");
}

/**
 * 解密
 * @param data
 * @return
 */
public static String decryptByPrivateKey(String data) {
    //log.info("私钥解密内容:"+new String(decryptByPrivateKey(decryptBASE64(data.replaceAll("@", "+")), getRsaKey(), MAX_DECRYPT_BLOCK)));
    return new String(decryptByPrivateKey(decryptBASE64(data.replaceAll("@", "+")), getRsaKey(), MAX_DECRYPT_BLOCK));
}
public static void main(String[] args) { 
    Map<String, String> keyMap = genKeyPair(KEY_SIZE); System.out.println("公钥======"+keyMap.get("publicKey")); 
    System.out.println("私钥======"+keyMap.get("privateKey")); 
     String encryptString = encryptByPublicKey("{\\\"allBillList\\\":[{\\\"id\\\":\\\"264786\\\",\\\"billNo\\\":\\\"WB2021051700064\\\",\\\"billTypeId\\\":13,\\\"billTypeName\\\":\\\"定损维修\\\",\\\"vehicleNo\\\":\\\"京Q683976\\\",\\\"vehicleId\\\":\\\"532928\\\",\\\"vehicleOwner\\\":\\\"北京测试公司\\\",\\\"vehicleModelName\\\":\\\"宝马\\\",\\\"orderCar\\\":0,\\\"orderCarName\\\":\\\"短租\\\",\\\"cityId\\\":null,\\\"cityName\\\":\\\"北京\\\",\\\"deptId\\\":null,\\\"deptName\\\":\\\"北京测试\\\",\\\"nowCityId\\\":null,\\\"nowCityName\\\":null,\\\"nowDeptId\\\":null,\\\"nowDeptName\\\":null,\\\"belongCityId\\\":null,\\\"belongCityName\\\":\\\"北京\\\",\\\"belongDeptId\\\":null,\\\"belongDeptName\\\":\\\"知春路店\\\",\\\"costBelongAreaName\\\":\\\"知春路大片区\\\",\\\"costBelongCityName\\\":\\\"北京\\\",\\\"costBelongDeptName\\\":\\\"知春路店\\\",\\\"createTime\\\":\\\"2021-05-17 10:11\\\",\\\"modifyTime\\\":null,\\\"billStatusId\\\":109,\\\"billStatusName\\\":\\\"方案已通过\\\",\\\"createEmpName\\\":\\\"JD\\\",\\\"createEmpDeptName\\\":\\\"北京测试\\\",\\\"pickupType\\\":2,\\\"pickupTypeName\\\":\\\"上门\\\",\\\"isDelete\\\":0,\\\"isDeleteeName\\\":\\\"否\\\",\\\"garageId\\\":null}],\\\"totalCount\\\":1}\";\n","MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnvGvwKuIfZdWilPI+nT/Pas1N6b3Jns7D9oK698h1j8yzmpD9KnM5hHCgl4toEVg4R4KEsJTTmUe9HU1dBTQby9TnBH5w5UeQgg/Mx5sJ3w5DyAPu2njOhU/5aoSInowpa5JLoba0YIzQWn++a/jhJs50T+Wt+xy3WEbF3QYN/Y7m0ZN1C70KXlX2xOLI8BL80BMqLF3Q1dIkvxLmxalJZiEnvkALWly8pERrvvz1YX6rKWOo1wtS5AJW1xrctnOf4saQi9/Jv0PRnkuFRo9BB1RZA/vV5kPt++szrCi7qDRCokAoQfn8enB1UJNED/tFWwqxpzZ+ic+C+FfLrxZ7nXocWMQWSojrIhY7+2TYT3fwO4ZvJoKlg71R6H+gSr2p0qBye+ELIeEr83UWMhvKrcAP0FpJcWpWpJaMKGo5yjUe4u7FBKF5j+O0GJCTfkxA8aw+KTZ/PnyoEI65PGD7i4XQWrvTPkyMcfMy9/dXd8efqzh5kg3kAauHvTBLcSpjRqCFT3pz6bK0azegrGPlIEPa3W5UzZ0MkhtM+6nbrOKgzuj27glwHRBNbhs8bllzVGU4+Zxv98lUp8VvPsVMweOHB4Zz/g+dLamHcMA0xLPPHZJRwvBbsm6rWd96Wcm0Y3ZyyIGMsj0AWPBjMvbHcBCJDFTxIMZ9GOAIMuU+lcCAwEAAQ=="); 
     System.out.println("密文======"+encryptString); String decryptString = decryptByPrivateKey(encryptString); 
    System.out.println("明文======"+decryptString); 
  } 
}

四、main方法测试结果:

公钥======MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAkFPpOKpa55rDkPMHuYcpy14rmuAv8Jn+kIwB81vzo154z+6yuzmxA9/7g/SQtZgkxsV323h3D6j1jYVMy+234noqx8Bj0UDVwrfFoG/M9mLnU/y5+CdlwGtVMTlfopfBsgZdJXQ72UpkFbVu87Ak7MwS95z3x7FtS4VlITcSM8tDs+qpmeMcbnVyCEyhKaxcqYyMvLwMqP4tE5UGH5YVBPBzfD4cKj/zXPqKAPhpQ+rtV/UBwgr+uS98Og07G1+KEjOd8aHbhksnLrNX1vz+WroR2sem14ke82k5VwAr5khb2bgeMsgwYCNB2yKOyYVfPq+13djAG2VR2TBCfQMm4WEI8rA54oKUDSi6XrYlH6ia+j0QXgmkF2dbj6zD8WGxfuIpfMxCHuPj5JvDgohxAMHT9KjxxVD9j5p48E8f3If2Vy6sOK236jmjko1/RXGS0TkfztIaQSFbDR2j9YFehMv906gK4D9VSYrIICgAptRHqpXCLEYAuvyuqla0YRhOuk6teHJHzxdX3B+JRiYNIN+ZEMrZ4weoxseLQvcFQaC2uM7Qu5gxHHk3t2MxHCMOWhTgPeHqcExnIAdW7XrnxO8b7wAr7CXLVZ92QYxg1zopV7shc0hWY03jdDAiyFCD5ZcQ1tMmRo9jqiL72OKOdJbZdBOoAoLw7zMvNADIAgMCAwEAAQ==
私钥======MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQCQU+k4qlrnmsOQ8we5hynLXiua4C/wmf6QjAHzW/OjXnjP7rK7ObED3/uD9JC1mCTGxXfbeHcPqPWNhUzL7bfieirHwGPRQNXCt8Wgb8z2YudT/Ln4J2XAa1UxOV+il8GyBl0ldDvZSmQVtW7zsCTszBL3nPfHsW1LhWUhNxIzy0Oz6qmZ4xxudXIITKEprFypjIy8vAyo/i0TlQYflhUE8HN8PhwqP/Nc+ooA+GlD6u1X9QHCCv65L3w6DTsbX4oSM53xoduGSycus1fW/P5auhHax6bXiR7zaTlXACvmSFvZuB4yyDBgI0HbIo7JhV8+r7Xd2MAbZVHZMEJ9AybhYQjysDnigpQNKLpetiUfqJr6PRBeCaQXZ1uPrMPxYbF+4il8zEIe4+Pkm8OCiHEAwdP0qPHFUP2PmnjwTx/ch/ZXLqw4rbfqOaOSjX9FcZLROR/O0hpBIVsNHaP1gV6Ey/3TqArgP1VJisggKACm1EeqlcIsRgC6/K6qVrRhGE66Tq14ckfPF1fcH4lGJg0g35kQytnjB6jGx4tC9wVBoLa4ztC7mDEceTe3YzEcIw5aFOA94epwTGcgB1bteufE7xvvACvsJctVn3ZBjGDXOilXuyFzSFZjTeN0MCLIUIPllxDW0yZGj2OqIvvY4o50ltl0E6gCgvDvMy80AMgCAwIDAQABAoICACv3tBvUId9ekWdN8jN9zqiqpoQG+fPFJfzo+gsmHwHM3OcTY5WPzLJOgLPBRHhdwg5fx9SvTS4THcMgMbYKVDOFXhT+MipkIvqvu1/Vz03b8XbvjcPgVKoayJg3T0AcFSDjuWqYj0bx162ZWRSZu5X70WdnhUBrd81C9Pz6ZuwqZxSfT02XF2k7FCMdHRex74SjUZiJfR3aWOcXRgdHVF3t1nCqBzCDzOKtXG9RPdg38FgURpXTfafypFiXAUOkhk5nNR2QXmz55hTfA8p1xhLjjl7k5ZnRpwEmNBah8b20m26nHWQBAmO3Oe/FBlSz8cEKDFBqIJP3+Mg+YHLvC9+zxazsSe8wRdCTYkas8YaacUohfVU/Hu7itDUNgIFteLU7/kr6rMifyinWbvZQbYX5Knv+ihpNnXv6tU2CkBAhN+kF4vrPdKVN+mH+hIGYHgEvDi23YZ2LgvV1d8/lu8TWworY7nAjRl0bFUAtiaAAtsXATv3r7wDs/CxuIqdKDhNVD0rmfupSliqUvH+n/nwTTf7zesGe0SoSSSIoplrgTQtQGTanBsP80bt52ragkzPRcpMP16V8acyiN87ORIXMeT299dmlcnyYC0Z3ASE+T/gZWqdMaYLBosP5ZflbVrO9Qd3odC98V18wmfSJ21PTZh4imugN1Q7gWJR5su6hAoIBAQDo4NhCdGC1yUYa6qVAR3YYp45xTKRvCixx5STdaS4KSTwM6Mf9UqoU9VfME+VhQOC99HKZT5frLCiPZbGFCpoK5vCa2KQ+OvqiigJdTyQyJbRyBBXOhe6ihNsbqlF+cDT62N8iQxJ4pMVn8SOOqIJaF2qYqJhTIDtK3/+o5hG9IgwjTvbk9djX7Hscmo2yDoEgtl4x+DYbbLVpacLjLY+0Of78z4BBac1DgLh81YPLYO4aV946xc+kvazmcRbLhPBhavofg09+TEa/d0uw7QIXDV1g6325LayFrFcQuNONHyQTeBmrNMDll7rvkT/80Bj9/SfiQ4omv1D4rWW0pG/TAoIBAQCeqFgoDsf5em8gwIdzOMwX8nBwxURgFxPasCjoB9QTM/ZMubmNlRsErGQa7j3tu5Om4P5PaTwiYzLnnhV24jr4kLzPmssKamxiDrP20GIfDgEoT4CthhPUoAvrasFrTAlWi0vMgWHQm481feswWAhxbwKEUNo+B7y+CeNjfGhZz4h+z0EYqfo6pKretUVdim0ZhsUySv9qPla+gG6T4X9X+o6yVubWBeiLvoGAbgcPgInIUKQK3e7o1a/AtgX/ui0HQqEoQ63BbzWD174qcaMCMP0XnTxQBhdb2+ZhsZkklj/hNJs5RzcbMzmirMJeHArotOMuQ2SDrDRPXQH7KPcRAoIBAQCl6ULJnaYk/T+v/4o6EG+HwyBNggAIiCQABPPNtpixhVl+DP4mcZVxFxY089vQ/OrhCl328ejXCH/hId9mXJZAvCWg/EWPfG+CC3cByVeNTqWPMW/j0jGgoayEukQTI5frO0VFYKmxQBrQIdFmWpF75ADyv/K+DlGP16SKTVdH+xDQuvpVRv31X6qaR1Y6C/FdP/A+A4tw4HMipdHODnC6QzNyI9dJQzqVJAjMD0Y1SFp6dC2Ei9eSk/uxtdI6rvyfOxr2BpRE88zXrgNECqcZi1ECsuPAYVTva0ggRr2ZZh1KrZ8EBbKEICRzd3UyBYQ4t/qJTfsH/fePI+I434o3AoIBAFIo9033KZOF1ZpuWTZPyVD1WUjsvtXL3Zo381cFBsvS8s8UtoQdHNq0szpG+Ybsxi96//b7lgpwuGG9OXxQ9xzVRxFzJYYFSo8U8hj0HHvccrj/QrGZZxeKseF9bSA1RfitNdl3fsHabLTUukBUtjqXtAP1Iq9QrmrzD+/q8tbfY93XUeyFyXEo6Ntfn8Yq8whvBBthPxczpRQNyjWGZr2WoOK1oeBfOudzBfkOAVYDyFYVfH2sJBYq4lK3cC/Xp43E8VO6iHZNMrdNt8qfAj0WRVo/MIZ4QQxuucUJhTavH/FtnpxwxpatVkFpmVXGy9dqJONGPvz45jXbAjWgJyECggEBAMKkcJGh4NV2cPG95686J7H6ds4CetFhFhYwKE60+7vH3KavUDCPeKESR8NU9hQpa49C6PZDn+ljrTUF4o08PjjZLEttvl5Zfz8VaecU6CYIObjrwg8sCtgxvm9a6+zG0qeM8BS75/9t7jqJL2o6pZFI9adGSTcaFpUq3jgWcIZiabec3o3C+G1kQjJC8110fyvOon8WNfKtsGe+/vFjrlYXytqVzDJCCtYH4OuGRIf3wZxGC8TTMM4+qjMZ3BD7S/3LLiTbvYEra+LM8spyUymyT2uyiuWKBruYjgRcger39M8flSEeV5vL+Y8sarVe+Ru3diB8dnM55MxVJTPonLk=
密文======OjMN2ywgRMMO2BrC+jNQKUo+FZaHe+G5qCVzsTA/rxqOLi6w8WrmVBvkeAU25fBFZSthovPZ9hC7Bmx+tpyNRVuqwquVmIxSzxFj9IifArzaaHGy/Fwd74B7zTjVRnP/oNmgz798Cg2Xrj7mM8JCoes+ZwHpBPVk49JFtdjwgMmyIz1zosqxUQNGUqP7MpEo2kbA85RBbjAH7Mo1RliUiOH7QqraJzroMTY/uExyAD3SVb4jmdANYIS2bx5IE6LHXKiBhvixWjQwEbLLGVHGcqxhl6y4THrj9Lx490nht0p9FF0BMboXtedYtxrYY7EwxGb/tdA88Sp0BDvBHW2A1ej+1i3FbEynwqXIMl3o2AFTucn62V6dO6lrHMzhrbQS1Ojx8JXGcS8X1ieEHKjwX/rdKPqGH/Ei5jdBEmxBQSJlzM++OGGqthq2GllBKB/jRKfiXw6YMtsoL0LQmG+hG0T3ALV2vepf9DR95OhQ9No+tO6VFpi9xYcUEGR7Uj2gy9x91JtPu71Nwxp5zoXb2GyQ3CFOGRKubWvcchaPpJXkwDkchQeaix5nwpvweZK+qN4X5uVvkpLSp9BpMLoNIE3ZI4MjI3bUBI3cUYPP9C3C2ZPJbzrwq2FXH4drnouKCG+IgPYVmbAgRt/W5Xm8FBc3WUfSbT535Q1NBfJ6ekcrp9cCW/MzVlKWQYpwAjGR/5pB2OxO7vihiuhDa28O1tyx2PtWTrnLwDM0P0hlY/b2lxKSJAIcjgKMVbSB/hqmy6jkA/s62uqNWSaAKYjhGuzsFT3Ogud/lExPfE+wEqSBq+VJkcIMFKWH4y689UJd5O2K9F2lXIworkYlsPm1BIHFLYJNzYyOMrXBQeP+Y+3NuNo+PeyJdbseDk2m5iwXcI7vqg+Vs1NHdJqHPzNtKmIlAbnIwr0jjtAUqbOUVfx/retMA3j07hepNQxmkjm5HbEFBUdniSCpOi/+ajQpKjZTDZpbZ18GjBeLjYldavfC5dqj9EYFjMq6JmJ4Q3M+i2gHHMnEEiA81szhrdCYZRjviRfOWlyFELdxoyKqQf6Qi7ozRucEioKQzkArVVVS32JYssBJ57DyuO+hoDK/UBEinU3xsl38WRQZHdzIYL6sRJ2F0uE1VcGWKAA4WmxZtsQT1CYwtq+0/dRbzburHq9R97kZbUWShrkBaDEERI/DvWsdzZVNQhhVpKS/C/B5jiGXJ4hHHqaSg+ujMws0AP/D1o2DylG8a1D/z9Qnl0yQ/pdvSyl36DSKeulzgFNIQ4F7fUX1DI489ebUgE8q5Reja64TwYiolmC6hTHVVW9+llHkOYGiBA9/fT2BRyyXBXjm/wVFqWRGXWwLgD04bw==
明文======{\"allBillList\":[{\"id\":\"264786\",\"billNo\":\"WB2021051700064\",\"billTypeId\":13,\"billTypeName\":\"定损维修\",\"vehicleNo\":\"京Q683976\",\"vehicleId\":\"532928\",\"vehicleOwner\":\"北京测试公司\",\"vehicleModelName\":\"宝马\",\"orderCar\":0,\"orderCarName\":\"短租\",\"cityId\":null,\"cityName\":\"北京\",\"deptId\":null,\"deptName\":\"北京测试\",\"nowCityId\":null,\"nowCityName\":null,\"nowDeptId\":null,\"nowDeptName\":null,\"belongCityId\":null,\"belongCityName\":\"北京\",\"belongDeptId\":null,\"belongDeptName\":\"知春路店\",\"costBelongAreaName\":\"知春路大片区\",\"costBelongCityName\":\"北京\",\"costBelongDeptName\":\"知春路店\",\"createTime\":\"2021-05-17 10:11\",\"modifyTime\":null,\"billStatusId\":109,\"billStatusName\":\"方案已通过\",\"createEmpName\":\"JD\",\"createEmpDeptName\":\"北京测试\",\"pickupType\":2,\"pickupTypeName\":\"上门\",\"isDelete\":0,\"isDeleteeName\":\"否\",\"garageId\":null}],\"totalCount\":1}";