android 使用BouncyCastle
网址:
https://square.github.io/retrofit/
https://github.com/square/retrofit/
  https://www.jianshu.com/p/81754adcd4ae
android jdk8使用
implementation 'org.bouncycastle:bcprov-jdk15on:1.70'
报异常:
java.security.NoSuchAlgorithmException: Provider BC does not provide SM4/CBC/PKCS5Padding
generateSm4EcbCipher 替换成它
private Cipher generateSm4EcbCipher(String sm4Name, int sm4Mode, byte[] sm4Key) throws NoSuchAlgorithmException, NoSuchProviderException, NoSuchPaddingException {
//        Cipher cipher = Cipher.getInstance(sm4Name, BouncyCastleProvider.PROVIDER_NAME);
        Cipher cipher = Cipher.getInstance(sm4Name, new BouncyCastleProvider());
        Key secretKey = new SecretKeySpec(sm4Key, SM4_NAME);
        IvParameterSpec ivParameterSpec = new IvParameterSpec(SM4_KEY_IV);
        try {
            cipher.init(sm4Mode, secretKey, ivParameterSpec);
        } catch (InvalidKeyException | InvalidAlgorithmParameterException e) {
            e.printStackTrace();
        }
        return cipher;
    }