RSA 加密工具类

RSA是一个非对称加密算法,它通常是先生成一对 RSA 密钥,其中保密密钥,由用户保存;另一个为公开密钥,可对外公开。

在这里插入图片描述

公开密钥加密(public-key cryptography),也称为非对称加密(asymmetric cryptography),一种密码学算法类型,在这种密码学方法中,需要一对密钥,一个是私人密钥,另一个则是公开密钥。这两个密钥是数学相关,用某用户密钥加密后所得的信息,只能用该用户的解密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了一对密钥中的一个,并不会危害到另外一个的秘密性质。称公开的密钥为公钥;不公开的密钥为私钥。

为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位

公钥加密,私钥解密

公钥可以发给所有人,数据加密之后用获得方可以用私钥解密,以此来得到真实的数据。

私钥加密,公钥解密

用于客户验证持有私钥一方发布的数据或文件是完整准确的,接收者由此可知这条信息确实来自于拥有私钥的某人,这被称作数字签名,公钥的形式就是数字证书。例如,从网上下载的安装程序,一般都带有程序制作者的数字签名,可以证明该程序的确是该作者(公司)发布的而不是第三方伪造的且未被篡改过(身份认证/验证)。公钥的形式就是数字证书。简单的说就是,我自己用私钥加密了,生成的就是数字签名。而我把公钥开放作为数字证书,别人就可以那我的数字证书来核对数字签名是不是我的。

加密代码工具

  • 生成公、私密钥

  • 公、私密钥加密

  • 公、私密钥解密

  • 签名、验签

import org.apache.commons.codec.binary.Base64;

import javax.crypto.Cipher;
import java.io.ByteArrayOutputStream;
import java.nio.charset.Charset;
import java.security.*;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;

/**
 * 非对称加密(分段加密和分段解密)
 * 服务端:私钥加密 -> 公钥解密
 * 客户端:公钥加密 -> 私钥解密
 * <p>
 * https://gitee.com/FlyLive/RSAdemo/blob/master/src/com/xiaolu/RSAUtil.java
 * https://blog.csdn.net/weixin_44774463/article/details/114095214
 */
public class EncRSA {
    private static String rsaPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCAWzhK/X+CtDhMQyUzVEQH/euInXQxbC4vXPi/HNvhBqg4p4fGN600OFWpuB3ToGgL2wOP5+JVaOUqUh7GRSEUzzPt+GGOLGujuzsT5auZ/TgJmsWUTsL555bYYp5euoPBy/KdbkjMKR8vGTITG75ngj2JhN+1etYkUlgUfuhoOQIDAQAB";
    private static String rsaPrivateKey = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAIBbOEr9f4K0OExDJTNURAf964iddDFsLi9c+L8c2+EGqDinh8Y3rTQ4Vam4HdOgaAvbA4/n4lVo5SpSHsZFIRTPM+34YY4sa6O7OxPlq5n9OAmaxZROwvnnlthinl66g8HL8p1uSMwpHy8ZMhMbvmeCPYmE37V61iRSWBR+6Gg5AgMBAAECgYBJC6CNjJX0G/ut6shQ3bOZmLdhl7l4Jshhy9cDa7j15oP1OeHau/SlsymM3Gqc9LxBgvIUAzKayIch/nnk+5JHJang4YGtH3UG892tHfZBWoq+UbBwCK8t475llCdo0AIbwEi1nbNXI8EWWFumaNCwO27IhchJw9oWchOUAaUnAQJBAMu0tScU4HB7N2Ml1iE5AY7pES6x7xIm3MMvv5GYFEXbscJrz29gwvvu00v1s2LnOVzs292yTue09dR0dwaN110CQQChTqKAAxscdbSoOQmFYqz2aEdpApxjYhTipMEMrgNZPD6WEiGHIvppUOgzsCMRh5sCEYCYBBwj9g9T+jJ3MVKNAkBVHD2MBKb5mCG+JTLgUqcaBLsPHXzbwqz+SFbsB/SAc5hDuTPEP1N4W4Kg/BllO2K2Nqhuam+ZU/xaNgb9EAppAkBqnKFUQDlD9xu+72u2iABPH57K7dnU6bdqEIAzVDOMX//xiew0985PmxTNTMXwyRKPLGg0kMrUjcWVuFBwbN3lAkB3AjD+27eicvOmT4byUyxPFLEdWwVpcoTxM3myh3EFv7Nf8D+aEJbvLK6ilIUGets6/gKiM9IrbLVVe5UZ1fB9";

    private static final String RSA_ALGORITHM_NO_PADDING = "RSA";
    public static final String RSA_ALGORITHM = "RSA/ECB/PKCS1Padding";
    public static final String SIGN_ALGORITHMS = "SHA256WithRSA";

    /**
     * 缺省的1024位密钥对, 可处理117个字节的数据
     */
    private static final int KEY_SIZE = 1024;
    /**
     * RSA最大加密明文大小、解密密文大小
     */
    private static final int MAX_ENCRYPT_BLOCK = 117;
    private static final int MAX_DECRYPT_BLOCK = 128;

    public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
    public static final String CIPHER_ENCRYPT = "encrypt";
    public static final String CIPHER_DECRYPT = "decrypt";

    /**
     * 初始化密钥
     */
    public static void initKey() throws Exception {
        KeyPairGenerator keyPairGenerator;
        keyPairGenerator = KeyPairGenerator.getInstance(RSA_ALGORITHM_NO_PADDING);
        keyPairGenerator.initialize(KEY_SIZE);
        KeyPair keyPair = keyPairGenerator.generateKeyPair();
        rsaPublicKey = Base64.encodeBase64String(keyPair.getPublic().getEncoded());
        rsaPrivateKey = Base64.encodeBase64String(keyPair.getPrivate().getEncoded());
        System.out.println("rsaPublicKey = " + rsaPublicKey);
        System.out.println("rsaPrivateKey = " + rsaPrivateKey);
    }

    /**
     * 公钥获取
     */
    private static PublicKey getPublicKey() throws Exception {
        X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(Base64.decodeBase64(rsaPublicKey));
        KeyFactory keyFactory = KeyFactory.getInstance(RSA_ALGORITHM_NO_PADDING);
        PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
        return publicKey;
    }

    /**
     * 私钥获取
     */
    private static PrivateKey getPrivateKey() throws Exception {
        PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(Base64.decodeBase64(rsaPrivateKey));
        KeyFactory keyFactory = KeyFactory.getInstance(RSA_ALGORITHM_NO_PADDING);
        PrivateKey privateKey = keyFactory.generatePrivate(priPKCS8);
        return privateKey;
    }


    /**
     * 分段加密、解密
     */
    public static String section(String type, String src, Cipher cipher) throws Exception {
        if (CIPHER_ENCRYPT.equals(type)) {
            byte[] bytes = src.getBytes(DEFAULT_CHARSET);
            int inputLen = bytes.length;
            int offSet = 0;
            byte[] cache;
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            int i = 0;
            while (inputLen - offSet > 0) {
                if (inputLen - offSet > MAX_ENCRYPT_BLOCK) {
                    cache = cipher.doFinal(bytes, offSet, MAX_ENCRYPT_BLOCK);
                } else {
                    cache = cipher.doFinal(bytes, offSet, inputLen - offSet);
                }
                out.write(cache, 0, cache.length);
                i++;
                offSet = i * MAX_ENCRYPT_BLOCK;
            }
            byte[] encryptedData = out.toByteArray();
            out.close();

            return Base64.encodeBase64String(encryptedData);
        } else if (CIPHER_DECRYPT.equals(type)) {
            byte[] bytes = Base64.decodeBase64(src);
            int inputLen = bytes.length;
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            int offSet = 0;
            byte[] cache;
            int i = 0;
            // 对数据分段解密
            while (inputLen - offSet > 0) {
                if (inputLen - offSet > MAX_DECRYPT_BLOCK) {
                    cache = cipher.doFinal(bytes, offSet, MAX_DECRYPT_BLOCK);
                } else {
                    cache = cipher.doFinal(bytes, offSet, inputLen - offSet);
                }
                out.write(cache, 0, cache.length);
                i++;
                offSet = i * MAX_DECRYPT_BLOCK;
            }
            byte[] decryptedData = out.toByteArray();
            out.close();

            return new String(decryptedData);
        }
        return "";
    }

    /**
     * 私钥加密
     */
    public static String privateEncrypt(String src) throws Exception {
        Cipher cipher = Cipher.getInstance(RSA_ALGORITHM);
        cipher.init(Cipher.ENCRYPT_MODE, getPrivateKey());
        return section(CIPHER_ENCRYPT, src, cipher);
    }

    /**
     * 私钥解密
     */
    public static String privateDecrypt(String src) throws Exception {
        Cipher cipher = Cipher.getInstance(RSA_ALGORITHM);
        cipher.init(Cipher.DECRYPT_MODE, getPrivateKey());
        return section(CIPHER_DECRYPT, src, cipher);
    }

    /**
     * 公钥加密
     */
    public static String publicEncrypt(String src) throws Exception {
        Cipher cipher = Cipher.getInstance(RSA_ALGORITHM);
        cipher.init(Cipher.ENCRYPT_MODE, getPublicKey());
        return section(CIPHER_ENCRYPT, src, cipher);
    }

    /**
     * 公钥解密
     */
    public static String publicDecrypt(String src) throws Exception {
        Cipher cipher = Cipher.getInstance(RSA_ALGORITHM);
        cipher.init(Cipher.DECRYPT_MODE, getPublicKey());
        return section(CIPHER_DECRYPT, src, cipher);
    }

    /**
     * 签名(私钥)
     */
    public static String sign(String content) throws Exception {
        Signature signature = Signature.getInstance(SIGN_ALGORITHMS);
        signature.initSign(getPrivateKey());
        signature.update(content.getBytes(DEFAULT_CHARSET));
        return Base64.encodeBase64String(signature.sign());
    }

    /**
     * 验签(公钥)
     *
     * @param content
     * @param sign
     */
    public static boolean verify(String content, String sign) throws Exception {
        Signature signature = Signature.getInstance(SIGN_ALGORITHMS);
        signature.initVerify(getPublicKey());
        signature.update(content.getBytes(DEFAULT_CHARSET));
        return signature.verify(Base64.decodeBase64(sign));
    }

    public static void main(String[] args) {
        try {
//            initKey();

            String data = "String data = "{\"code\":0,\"msg\":\"请求成功\",\"enCode\":0,\"data\":{\"address\":\"西藏自治区日喀则市定日县\",\"list\":[{\"nickname\":\"LFHZ\",\"avatar\":\"https://wer.we.aer/vi_32/AgglAoVrBemzHgkQ2qPo8yWCqRicCcD8bLoDiaEibWwfAwa9jJ55DqUbk3Zhht0WNF6IzbJ7IkfaCdAIlGtNEoBjw/132\",\"partnerId\":\"4126\",\"residentialName\":\"珠穆朗玛峰\",\"detailedAddress\":\"西藏自治区日喀则市定日县-珠穆朗玛峰\",\"distance\":\"0.38\",\"grouponId\":null,\"restState\":0,\"cityId\":10390,\"belongCityId\":10391},{\"nickname\":\"DQ\",\"avatar\":\"https://wer.we.aer/vi_32/DYAIOgq83eryenSH0toiaCClM9VnVrcm7AJRGduwpnZ6vkia6vXIrJM47yOMkDOr3KoH9aQ4sh6bg4lpXrGzFRbA/132\",\"partnerId\":\"200943\",\"residentialName\":\"珠穆朗玛峰-7层\",\"detailedAddress\":\"西藏自治区日喀则市定日县 -珠穆朗玛峰\",\"distance\":\"0.38\",\"grouponId\":null,\"restState\":0,\"cityId\":10379,\"belongCityId\":10637},{\"nickname\":\"Wall_e\",\"avatar\":\"http://wer.we.aer/vi_32/DYAIOgq83epsRcQM1w3rNqs1dTnd6CRyd71vHtVyffWOYqS0FRibGAR3RrJvQJITbTxrDURLgmgBDtst4YB8dmQ/132\",\"partnerId\":\"200034\",\"residentialName\":\"珠穆朗玛峰-3444\",\"detailedAddress\":\"西藏自治区日喀则市定日县 -珠穆朗玛峰\",\"distance\":\"0.38\",\"grouponId\":null,\"restState\":1,\"cityId\":10369,\"belongCityId\":10370},{\"nickname\":\"you are my shine\",\"avatar\":\"https://wer.we.aer/vi_32/gJdYS9asHZW8sibN2H8MFx5V1YTuPeicKscFWVIDTXAxMGBE09icNBtdOHQNblrDXJGgPwyLGzEOxJKLfCIEIlFibQ/132\",\"partnerId\":\"201066\",\"residentialName\":\"珠穆朗玛峰-1-2-1602\",\"detailedAddress\":\"西藏自治区日喀则市定日县-珠穆朗玛峰-珠穆朗玛峰\",\"distance\":\"0.38\",\"grouponId\":null,\"restState\":0,\"cityId\":6,\"belongCityId\":10160},{\"nickname\":\"ᅠᅠᅠ\",\"avatar\":\"https://wer.we.aer/vi_32/DYAIOgq83ep0aciaYu2gSRM29pYKPoXsUJVAfr2AWRHS1fNbxQftiax4QYEWYeuV4WfllBua4jEVwWpAZNMDEkkA/132\",\"partnerId\":\"200065\",\"residentialName\":\"珠穆朗玛峰大本营-3单元\",\"detailedAddress\":\"西藏自治区日喀则市定日县珠峰路-珠穆朗玛峰大本营-珠穆朗玛峰大本营\",\"distance\":\"21.63\",\"grouponId\":null,\"restState\":0,\"cityId\":6,\"belongCityId\":5912},{\"nickname\":\"4_\",\"avatar\":\"https://wer.we.aer/vi_32/Q0j4TwGTfTIrg3ZKwyfUSsDsEHxHUePuGRvlfAGdiblY770sr4R1CMfJPcPKahs74aRBgs6VTsUxHxVlQ8Pe9Eg/132\",\"partnerId\":\"200893\",\"residentialName\":\"珠穆朗玛峰大本营-珠穆朗玛峰大本营-山顶1号\",\"detailedAddress\":\"西藏自治区日喀则市定日县珠峰路-珠穆朗玛峰大本营-珠穆朗玛峰大本营\",\"distance\":\"21.63\",\"grouponId\":null,\"restState\":0,\"cityId\":10594,\"belongCityId\":10595},{\"nickname\":\"一把卷毛头\",\"avatar\":\"https://wer.we.aer/vi_32/DYAIOgq83eoZcceKpAXXhYnkMW5TQ8NRCGUft8ST435vx7iaUibK2AK85ibFckniariaiaCVsNVUK6COjvSq0bsYbIkw/132\",\"partnerId\":\"201049\",\"residentialName\":\"珠穆朗玛峰大本营-1234\",\"detailedAddress\":\"西藏自治区日喀则市定日县珠峰路-珠穆朗玛峰大本营-珠穆朗玛峰大本营\",\"distance\":\"21.63\",\"grouponId\":null,\"restState\":0,\"cityId\":10608,\"belongCityId\":10610},{\"nickname\":\"一把卷毛头\",\"avatar\":\"https://wer.we.aer/vi_32/DYAIOgq83eoZcceKpAXXhYnkMW5TQ8NRCGUft8ST435vx7iaUibK2AK85ibFckniariaiaCVsNVUK6COjvSq0bsYbIkw/132\",\"partnerId\":\"201047\",\"residentialName\":\"珠穆朗玛峰大本营-1号楼135\",\"detailedAddress\":\"西藏自治区日喀则市定日县珠峰路-珠穆朗玛峰大本营-珠穆朗玛峰大本营\",\"distance\":\"21.63\",\"grouponId\":null,\"restState\":0,\"cityId\":10608,\"belongCityId\":10610},{\"nickname\":\"一把卷毛头\",\"avatar\":\"https://wer.we.aer/vi_32/DYAIOgq83eoZcceKpAXXhYnkMW5TQ8NRCGUft8ST435vx7iaUibK2AK85ibFckniariaiaCVsNVUK6COjvSq0bsYbIkw/132\",\"partnerId\":\"201040\",\"residentialName\":\"珠穆朗玛峰大本营-1\",\"detailedAddress\":\"西藏自治区日喀则市定日县珠峰路-珠穆朗玛峰大本营\",\"distance\":\"21.63\",\"grouponId\":null,\"restState\":0,\"cityId\":10608,\"belongCityId\":10610},{\"nickname\":\"啦啦啦啦啦啦\",\"avatar\":\"https://wer.we.aer/vi_32/Q0j4TwGTfTJsyDwZ5YMCsPVjcU694Jk5LNhQUsRjAS2e1nfADxEKCvDVekvice9STGUtF6lbuTibElicj0J7Hj5ZQ/132\",\"partnerId\":\"201039\",\"residentialName\":\"珠穆朗玛峰大本营-4楼321\",\"detailedAddress\":\"西藏自治区日喀则市定日县珠峰路-珠穆朗玛峰大本营\",\"distance\":\"21.63\",\"grouponId\":null,\"restState\":0,\"cityId\":10390,\"belongCityId\":10391},{\"nickname\":\"健壹\",\"avatar\":\"https://wer.we.aer/vi_32/IVeewXgycklCZwBLOticPTnWfRFV9GdFhPicWJibfms4rJDhhBDZia8gicKftuEkDJSZwakshtOwu0V1kH6bqu8hEfQ/132\",\"partnerId\":\"200745\",\"residentialName\":\"珠穆朗玛峰大本营-自动化\",\"detailedAddress\":\"西藏自治区日喀则市定日县珠峰路-珠穆朗玛峰大本营\",\"distance\":\"21.63\",\"grouponId\":null,\"restState\":0,\"cityId\":10379,\"belongCityId\":10637}]}}";";

            // 1、公钥加密
            String pub_rsa = publicEncrypt(data);
            System.out.println("pub_rsa = " + pub_rsa);
            // 2、私钥解密
            String pri_dec = privateDecrypt(pub_rsa);
            System.out.println("pri_dec = " + pri_dec);

            // 1、私钥加密
            String pri_rsa = privateEncrypt(data);
            System.out.println("pri_rsa = " + pri_rsa);
            // 2、公钥解密
            String pub_dec = publicDecrypt(pri_rsa);
            System.out.println("pub_dec = " + pub_dec);

            // 验签
            String nameSign = sign(data);
            System.out.println("验签 = " + verify(data, nameSign));
            System.out.println('\n');

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

执行结果

pub_rsa = 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
pri_dec = {"code":0,"msg":"请求成功","enCode":0,"data":{"address":"西藏自治区日喀则市定日县","list":[{"nickname":"LFHZ","avatar":"https://wer.we.aer/vi_32/AgglAoVrBemzHgkQ2qPo8yWCqRicCcD8bLoDiaEibWwfAwa9jJ55DqUbk3Zhht0WNF6IzbJ7IkfaCdAIlGtNEoBjw/132","partnerId":"4126","residentialName":"珠穆朗玛峰","detailedAddress":"西藏自治区日喀则市定日县-珠穆朗玛峰","distance":"0.38","grouponId":null,"restState":0,"cityId":10390,"belongCityId":10391},{"nickname":"DQ","avatar":"https://wer.we.aer/vi_32/DYAIOgq83eryenSH0toiaCClM9VnVrcm7AJRGduwpnZ6vkia6vXIrJM47yOMkDOr3KoH9aQ4sh6bg4lpXrGzFRbA/132","partnerId":"200943","residentialName":"珠穆朗玛峰-7层","detailedAddress":"西藏自治区日喀则市定日县 -珠穆朗玛峰","distance":"0.38","grouponId":null,"restState":0,"cityId":10379,"belongCityId":10637},{"nickname":"Wall_e","avatar":"http://wer.we.aer/vi_32/DYAIOgq83epsRcQM1w3rNqs1dTnd6CRyd71vHtVyffWOYqS0FRibGAR3RrJvQJITbTxrDURLgmgBDtst4YB8dmQ/132","partnerId":"200034","residentialName":"珠穆朗玛峰-3444","detailedAddress":"西藏自治区日喀则市定日县 -珠穆朗玛峰","distance":"0.38","grouponId":null,"restState":1,"cityId":10369,"belongCityId":10370},{"nickname":"you are my shine","avatar":"https://wer.we.aer/vi_32/gJdYS9asHZW8sibN2H8MFx5V1YTuPeicKscFWVIDTXAxMGBE09icNBtdOHQNblrDXJGgPwyLGzEOxJKLfCIEIlFibQ/132","partnerId":"201066","residentialName":"珠穆朗玛峰-1-2-1602","detailedAddress":"西藏自治区日喀则市定日县-珠穆朗玛峰-珠穆朗玛峰","distance":"0.38","grouponId":null,"restState":0,"cityId":6,"belongCityId":10160},{"nickname":"ᅠᅠᅠ","avatar":"https://wer.we.aer/vi_32/DYAIOgq83ep0aciaYu2gSRM29pYKPoXsUJVAfr2AWRHS1fNbxQftiax4QYEWYeuV4WfllBua4jEVwWpAZNMDEkkA/132","partnerId":"200065","residentialName":"珠穆朗玛峰大本营-3单元","detailedAddress":"西藏自治区日喀则市定日县珠峰路-珠穆朗玛峰大本营-珠穆朗玛峰大本营","distance":"21.63","grouponId":null,"restState":0,"cityId":6,"belongCityId":5912},{"nickname":"4_","avatar":"https://wer.we.aer/vi_32/Q0j4TwGTfTIrg3ZKwyfUSsDsEHxHUePuGRvlfAGdiblY770sr4R1CMfJPcPKahs74aRBgs6VTsUxHxVlQ8Pe9Eg/132","partnerId":"200893","residentialName":"珠穆朗玛峰大本营-珠穆朗玛峰大本营-山顶1号","detailedAddress":"西藏自治区日喀则市定日县珠峰路-珠穆朗玛峰大本营-珠穆朗玛峰大本营","distance":"21.63","grouponId":null,"restState":0,"cityId":10594,"belongCityId":10595},{"nickname":"一把卷毛头","avatar":"https://wer.we.aer/vi_32/DYAIOgq83eoZcceKpAXXhYnkMW5TQ8NRCGUft8ST435vx7iaUibK2AK85ibFckniariaiaCVsNVUK6COjvSq0bsYbIkw/132","partnerId":"201049","residentialName":"珠穆朗玛峰大本营-1234","detailedAddress":"西藏自治区日喀则市定日县珠峰路-珠穆朗玛峰大本营-珠穆朗玛峰大本营","distance":"21.63","grouponId":null,"restState":0,"cityId":10608,"belongCityId":10610},{"nickname":"一把卷毛头","avatar":"https://wer.we.aer/vi_32/DYAIOgq83eoZcceKpAXXhYnkMW5TQ8NRCGUft8ST435vx7iaUibK2AK85ibFckniariaiaCVsNVUK6COjvSq0bsYbIkw/132","partnerId":"201047","residentialName":"珠穆朗玛峰大本营-1号楼135","detailedAddress":"西藏自治区日喀则市定日县珠峰路-珠穆朗玛峰大本营-珠穆朗玛峰大本营","distance":"21.63","grouponId":null,"restState":0,"cityId":10608,"belongCityId":10610},{"nickname":"一把卷毛头","avatar":"https://wer.we.aer/vi_32/DYAIOgq83eoZcceKpAXXhYnkMW5TQ8NRCGUft8ST435vx7iaUibK2AK85ibFckniariaiaCVsNVUK6COjvSq0bsYbIkw/132","partnerId":"201040","residentialName":"珠穆朗玛峰大本营-1","detailedAddress":"西藏自治区日喀则市定日县珠峰路-珠穆朗玛峰大本营","distance":"21.63","grouponId":null,"restState":0,"cityId":10608,"belongCityId":10610},{"nickname":"啦啦啦啦啦啦","avatar":"https://wer.we.aer/vi_32/Q0j4TwGTfTJsyDwZ5YMCsPVjcU694Jk5LNhQUsRjAS2e1nfADxEKCvDVekvice9STGUtF6lbuTibElicj0J7Hj5ZQ/132","partnerId":"201039","residentialName":"珠穆朗玛峰大本营-4楼321","detailedAddress":"西藏自治区日喀则市定日县珠峰路-珠穆朗玛峰大本营","distance":"21.63","grouponId":null,"restState":0,"cityId":10390,"belongCityId":10391},{"nickname":"健壹","avatar":"https://wer.we.aer/vi_32/IVeewXgycklCZwBLOticPTnWfRFV9GdFhPicWJibfms4rJDhhBDZia8gicKftuEkDJSZwakshtOwu0V1kH6bqu8hEfQ/132","partnerId":"200745","residentialName":"珠穆朗玛峰大本营-自动化","detailedAddress":"西藏自治区日喀则市定日县珠峰路-珠穆朗玛峰大本营","distance":"21.63","grouponId":null,"restState":0,"cityId":10379,"belongCityId":10637}]}}
pri_rsa = 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
pub_dec = {"code":0,"msg":"请求成功","enCode":0,"data":{"address":"西藏自治区日喀则市定日县","list":[{"nickname":"LFHZ","avatar":"https://wer.we.aer/vi_32/AgglAoVrBemzHgkQ2qPo8yWCqRicCcD8bLoDiaEibWwfAwa9jJ55DqUbk3Zhht0WNF6IzbJ7IkfaCdAIlGtNEoBjw/132","partnerId":"4126","residentialName":"珠穆朗玛峰","detailedAddress":"西藏自治区日喀则市定日县-珠穆朗玛峰","distance":"0.38","grouponId":null,"restState":0,"cityId":10390,"belongCityId":10391},{"nickname":"DQ","avatar":"https://wer.we.aer/vi_32/DYAIOgq83eryenSH0toiaCClM9VnVrcm7AJRGduwpnZ6vkia6vXIrJM47yOMkDOr3KoH9aQ4sh6bg4lpXrGzFRbA/132","partnerId":"200943","residentialName":"珠穆朗玛峰-7层","detailedAddress":"西藏自治区日喀则市定日县 -珠穆朗玛峰","distance":"0.38","grouponId":null,"restState":0,"cityId":10379,"belongCityId":10637},{"nickname":"Wall_e","avatar":"http://wer.we.aer/vi_32/DYAIOgq83epsRcQM1w3rNqs1dTnd6CRyd71vHtVyffWOYqS0FRibGAR3RrJvQJITbTxrDURLgmgBDtst4YB8dmQ/132","partnerId":"200034","residentialName":"珠穆朗玛峰-3444","detailedAddress":"西藏自治区日喀则市定日县 -珠穆朗玛峰","distance":"0.38","grouponId":null,"restState":1,"cityId":10369,"belongCityId":10370},{"nickname":"you are my shine","avatar":"https://wer.we.aer/vi_32/gJdYS9asHZW8sibN2H8MFx5V1YTuPeicKscFWVIDTXAxMGBE09icNBtdOHQNblrDXJGgPwyLGzEOxJKLfCIEIlFibQ/132","partnerId":"201066","residentialName":"珠穆朗玛峰-1-2-1602","detailedAddress":"西藏自治区日喀则市定日县-珠穆朗玛峰-珠穆朗玛峰","distance":"0.38","grouponId":null,"restState":0,"cityId":6,"belongCityId":10160},{"nickname":"ᅠᅠᅠ","avatar":"https://wer.we.aer/vi_32/DYAIOgq83ep0aciaYu2gSRM29pYKPoXsUJVAfr2AWRHS1fNbxQftiax4QYEWYeuV4WfllBua4jEVwWpAZNMDEkkA/132","partnerId":"200065","residentialName":"珠穆朗玛峰大本营-3单元","detailedAddress":"西藏自治区日喀则市定日县珠峰路-珠穆朗玛峰大本营-珠穆朗玛峰大本营","distance":"21.63","grouponId":null,"restState":0,"cityId":6,"belongCityId":5912},{"nickname":"4_","avatar":"https://wer.we.aer/vi_32/Q0j4TwGTfTIrg3ZKwyfUSsDsEHxHUePuGRvlfAGdiblY770sr4R1CMfJPcPKahs74aRBgs6VTsUxHxVlQ8Pe9Eg/132","partnerId":"200893","residentialName":"珠穆朗玛峰大本营-珠穆朗玛峰大本营-山顶1号","detailedAddress":"西藏自治区日喀则市定日县珠峰路-珠穆朗玛峰大本营-珠穆朗玛峰大本营","distance":"21.63","grouponId":null,"restState":0,"cityId":10594,"belongCityId":10595},{"nickname":"一把卷毛头","avatar":"https://wer.we.aer/vi_32/DYAIOgq83eoZcceKpAXXhYnkMW5TQ8NRCGUft8ST435vx7iaUibK2AK85ibFckniariaiaCVsNVUK6COjvSq0bsYbIkw/132","partnerId":"201049","residentialName":"珠穆朗玛峰大本营-1234","detailedAddress":"西藏自治区日喀则市定日县珠峰路-珠穆朗玛峰大本营-珠穆朗玛峰大本营","distance":"21.63","grouponId":null,"restState":0,"cityId":10608,"belongCityId":10610},{"nickname":"一把卷毛头","avatar":"https://wer.we.aer/vi_32/DYAIOgq83eoZcceKpAXXhYnkMW5TQ8NRCGUft8ST435vx7iaUibK2AK85ibFckniariaiaCVsNVUK6COjvSq0bsYbIkw/132","partnerId":"201047","residentialName":"珠穆朗玛峰大本营-1号楼135","detailedAddress":"西藏自治区日喀则市定日县珠峰路-珠穆朗玛峰大本营-珠穆朗玛峰大本营","distance":"21.63","grouponId":null,"restState":0,"cityId":10608,"belongCityId":10610},{"nickname":"一把卷毛头","avatar":"https://wer.we.aer/vi_32/DYAIOgq83eoZcceKpAXXhYnkMW5TQ8NRCGUft8ST435vx7iaUibK2AK85ibFckniariaiaCVsNVUK6COjvSq0bsYbIkw/132","partnerId":"201040","residentialName":"珠穆朗玛峰大本营-1","detailedAddress":"西藏自治区日喀则市定日县珠峰路-珠穆朗玛峰大本营","distance":"21.63","grouponId":null,"restState":0,"cityId":10608,"belongCityId":10610},{"nickname":"啦啦啦啦啦啦","avatar":"https://wer.we.aer/vi_32/Q0j4TwGTfTJsyDwZ5YMCsPVjcU694Jk5LNhQUsRjAS2e1nfADxEKCvDVekvice9STGUtF6lbuTibElicj0J7Hj5ZQ/132","partnerId":"201039","residentialName":"珠穆朗玛峰大本营-4楼321","detailedAddress":"西藏自治区日喀则市定日县珠峰路-珠穆朗玛峰大本营","distance":"21.63","grouponId":null,"restState":0,"cityId":10390,"belongCityId":10391},{"nickname":"健壹","avatar":"https://wer.we.aer/vi_32/IVeewXgycklCZwBLOticPTnWfRFV9GdFhPicWJibfms4rJDhhBDZia8gicKftuEkDJSZwakshtOwu0V1kH6bqu8hEfQ/132","partnerId":"200745","residentialName":"珠穆朗玛峰大本营-自动化","detailedAddress":"西藏自治区日喀则市定日县珠峰路-珠穆朗玛峰大本营","distance":"21.63","grouponId":null,"restState":0,"cityId":10379,"belongCityId":10637}]}}
验签 = true






未经允许请勿转载:程序喵 » RSA 加密工具类

点  赞 (2) 打  赏
分享到: