在抖音开放平台里有这么一个接口是获取抖音用户的手机号的,在用户授权之后会得到一个由base64的加密的字符串,我们要想知道这个字符串代表的手机号是多少,就必须要进行解密。
一下是抖音开放平台给出的示例。然而我个人看不懂这是什么代码写的,然后再网上东拼西凑,给出大家一个java版的解密demo
根据抖音官方说的,根据自己申请的应用clientSecret =>(
解密手机号,使用Aes算法解密,秘钥是clientSecret, 向量lv 是clientSecret前16字节
)
去解密自己所得的用户手机加密串
官方说的这句( 向量lv 是clientSecret前16字节)=> 意思是说根据自己的应用clientSecret 从第一位开始数到第16位截取出来获取到这一段字符串的byte[]数组去解密
一下是java版的解密demo-------- public class climbHtml {public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeyException, NoSuchPaddingException, BadPaddingException, IllegalBlockSizeException, InvalidAlgorithmParameterException, UnsupportedEncodingException {System.out.println(decryptAES("B1/yGfhuiewjwpoCMEw==".getBytes(), "uj2fhiso3wdu4ghduhf85eds", "uj2fhiso3wdu4gh"));} /** * 解密 * @param content: 待解密内容,是 BASE64 编码后的字节数组 * @param secretKeyStr: 解密使用的 AES 密钥,BASE64 编码后的字符串 * @param iv: 初始化向量,长度 16 字节,16*8 = 128 位 * @return 解密后的明文,直接返回经 UTF-8 编码转换后的明文 */ public static String decryptAES(byte[] content, String secretKeyStr, String iv) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException, InvalidAlgorithmParameterException, UnsupportedEncodingException { // 密文进行 BASE64 解密处理 byte[] contentDecByBase64 = Base64.getDecoder().decode(content); // 获得一个 SecretKeySpec // SecretKeySpec secretKeySpec = new SecretKeySpec(Base64.getDecoder().decode(secretKeyStr), "AES"); SecretKeySpec secretKeySpec = new SecretKeySpec(secretKeyStr.getBytes(), "AES"); // 获得加密算法实例对象 Cipher Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); //"算法/模式/补码方式" // 获得一个初始化 IvParameterSpec IvParameterSpec ivParameterSpec = new IvParameterSpec(iv.getBytes()); // 根据参数初始化算法 cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec); // 解密 return new String(cipher.doFinal(contentDecByBase64), "utf8"); }} 可以加入群里交流
点击链接加入群聊【技术-资源-交流群】:https://jq.qq.com/?_wv=1027&k=mLJpD5xs
飞艇稳赚不赔的打法ontent); // 获得一个 SecretKeySpec // SecretKeySpec secretKeySpec = new SecretKeySpec(Base64.getDecoder().decode(secretKeyStr), "AES"); SecretKeySpec secretKeySpec = new SecretKeySpec(secretKeyStr.getBytes(), "AES"); // 获得加密算法实例对象 Cipher Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); //"算法/模式/补码方式" // 获得一个初始化 IvParameterSpec IvParameterSpec ivParameterSpec = new IvParameterSpec(iv.getBytes()); // 根据参数初始化算法 cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec); // 解密 return new String(cipher.doFinal(contentDecByBase64), "utf8"); }} 可以加入群里交流
点击链接加入群聊【技术-资源-交流群】:https://jq.qq.com/?_wv=1027&k=mLJpD5xs