JAVA 實現對稱解密小程式使用者資訊(AES-128-CBC演算法)
需要引入bcprov.jar包
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.51</version>
</dependency>
import java.io.UnsupportedEncodingException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.Security;
import java.util.Arrays;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
/**
* AES CBC 解密微信密文
* @author mackG
*
*/
public class DecryptUtil {
// 演算法名稱
final String KEY_ALGORITHM = "AES";
// 加解密演算法/模式/填充方式
final String algorithmStr = "AES/CBC/PKCS7Padding";
//
private Key key;
private Cipher cipher;
public void init(byte[] keyBytes) {
// 如果金鑰不足16位,那麼就補足. 這個if 中的內容很重要
int base = 16;
if (keyBytes.length % base != 0) {
int groups = keyBytes.length / base + (keyBytes.length % base != 0 ? 1 : 0);
byte[] temp = new byte[groups * base];
Arrays.fill(temp, (byte) 0);
System.arraycopy(keyBytes, 0, temp, 0, keyBytes.length);
keyBytes = temp;
}
// 初始化
Security.addProvider(new BouncyCastleProvider());
// 轉化成JAVA的金鑰格式
key = new SecretKeySpec(keyBytes, KEY_ALGORITHM);
try {
// 初始化cipher
cipher = Cipher.getInstance(algorithmStr);
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 解密方法
*
* @param encryptedData
* 要解密的字串
* @param keyBytes
* 解密金鑰
* @return
*/
public byte[] decrypt(String encryptedDataStr, String keyBytesStr, String ivStr) {
byte[] encryptedText = null;
byte[] encryptedData = null;
byte[] sessionkey = null;
byte[] iv = null;
try {
sessionkey = Base64.decodeBase64(keyBytesStr);
encryptedData = Base64.decodeBase64(encryptedDataStr);
iv = Base64.decodeBase64(ivStr);
init(sessionkey);
cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(iv));
encryptedText = cipher.doFinal(encryptedData);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return encryptedText;
}
public static void main(String[] args) throws UnsupportedEncodingException{
DecryptUtil d = new DecryptUtil();
String content = "CNtSo3kCTxYoaxdhxzmVN/CvIJK41+1DOTZcrXUVMd9+5Z8jTDvbn6kExXRzH+EqWD6oyXwxUzYsW5nyZ7hGAx4pqYylJUzshx+R9DrpQ7HAb5ScH1e0zk//UAiD11W19uFo2/nYyx5ug99jCj6YOgicpfNHSatqkLVRryQlDEzNyaEuo/84uHIpxwC7t8yqmuwUtW2qedtJxWmYWOC1ZQ==";
String key = "9QJPlP2TyuDFH1A73pnGqg==";
String iv = "SABdIDCax6u7H0f6OILGzw==";
byte[] result = d.decrypt(content, key, iv);
System.out.println(new String(result,"UTF-8"));
}
}
執行程式碼,裡面有我手機號,如有問題可以加微信私聊!
相關推薦
JAVA 實現對稱解密小程式使用者資訊(AES-128-CBC演算法)
需要引入bcprov.jar包 <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</ar
Java實現微信小程式登入 獲取使用者資訊
小程式比公眾號授權登入 更加簡單 其實沒什麼是後臺需要處理的 前端傳過來一個code 我們儲存以下通過code獲取過來的openid就可以 其他的使用者資訊 前端小程式那邊可以獲取。首先既然是小程式登入 你要有一個你自己的小程式還是要拿到你自己的appid和appSecret
java解析微信小程式使用者資訊demo
1、引入maven依賴 <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk16</artifactId>
java實現shell命令--小程式(通過Runtime和Process實現)
先上程式碼(功能是要列出目錄): package testProcess; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.LineNumberReader; p
Java開發微信小程式(二)獲取並解密小程式使用者和手機資訊
第二篇 獲取並解密小程式的加密資訊包括使用者和手機資訊。 如果對其他的資訊幹興趣,還可以點選以下的連線 1.小程式登入獲取,小程式的openId和unionId。 2.獲取並解密小程式的加密資訊包括使用者和手機資訊。 3.用小程式給使用者推送服務訊息。 4.給繫結小
基於java的微信小程式的實現(五)使用者個人資訊小程式端開發
1.個人資訊頁面展示 2.顯示個人資訊功能 1.需求分析 在該頁面首先需要在載入完畢後去呼叫後端的查找個人資訊的介面,並將返回的值回顯到個人資訊頁面上 2.js程式碼的編寫 onLoad:function(params){ var me=this;
基於java的微信小程式的實現(四)使用者個人資訊相關介面開發
1.查詢使用者個人資訊介面開發 1.需求分析 需要通過前端傳來的使用者的userid去資料庫中進行查詢,並將查詢到的物件封裝為usersVo返回給前端 dao層程式碼 public interface UsersDao extends JpaRepository<Use
Java之——實現微信小程式加密資料解密演算法
一、概述 微信推出了小程式,很多公司的客戶端應用不僅具有了APP、H5、還接入了小程式開發。但是,小程式中竟然沒有提供Java版本的加密資料解密演算法。這著實讓廣大的Java開發人員蛋疼。 我們下載的演算法示例如下: 木有Java!! 木有Java!!
微信小程式開放資料解密 AES-128-CBC 解密(Java版本)
最近朋友在弄微信小程式開發,需要跟微信服務端互動,微信敏感資料都有加密返回,需要在服務端接收進行解密後再返回給客戶端小程式,今天就通過Java進行資料的解密,以下展示是Java程式碼如果你使用的C#,請訪問這個地址(C#版本) https://blog.csdn.net/jasonso
微信小程式從入門第一講 java&&jFinal 小程式登陸功能實現以及獲取唯一標識openid和unionid
在我以前的一篇部落格中講到了獲取openid的方法,這裡就不做過多的講解java獲取微信小程式openid。這裡主要講解微信小程式登陸的實現和獲取unionid。需要提醒的是我後端框架使用的是jFinal,傳值方式跟spring的那套有些許的差別。 1、首先要知道微信小程式的開發本身就是基於
基於java的微信小程式的實現(七)視訊首頁的前後端開發
1.效果演示 2.編寫分頁查詢全部視訊的介面開發 1.需求分析 該介面會查詢資料庫中全部的視訊內容,因為視訊內容過多,要採用分頁查詢,這裡我們使用Pageable對查詢結果進行分頁處理,另外,在前端顯示視訊的內容時候還需要額外的顯示使用者的頭像和暱稱資訊,所以在進行視訊列表
基於java的微信小程式的實現(六)使用者視訊上傳的前後端開發
1.使用者上傳視訊功能需求分析 使用者在登入之後可以在個人資訊頁面點選上傳視訊按鈕,會讓使用者在本地選擇一段視訊進行上傳,視訊不能過長,選擇好後,使用者會跳轉到選擇背景音樂的介面,可以選擇為該視訊加上一段背景音樂,並且可以對該視訊做相關描述,然後點選上傳視訊按鈕,完成視訊上傳。 2.
基於java的微信小程式的實現(三)登入,註冊,注小程式端的實現
1.微信小程式專案結構認識 js檔案用來寫相關的邏輯操作,主要是用來操作資料 json檔案用來寫一些相關的配置 wxss相當於css用來寫頁面樣式 wxml相當於html用來寫頁面的元素的 pages資料夾中可以存放多個資料夾,每個資料夾裡面都是一套是js,json
基於java的微信小程式的實現(二)登入,註冊,登出介面的實現
1.開發工具以及相關環境的配置 1.首先關於IDE,前端小程式端採用的是微信官方的微信開發者工具,後端使用的是idea(idea是真的智慧,再也不想回去eclipse了呢),關於前端的一些程式碼,主要是參照微信官方的API進行開發的,整體的檔案結構也和js,css,html也很相似。
基於java的微信小程式的實現(一)專案介紹
一,專案介紹 佐倉短視訊是一個以java為後臺編寫的短視訊類的微信小程式專案 使用者可以實現登入,註冊,視訊檢視,視訊上傳,個人資訊檢視,頭像上傳等功能 二,技術選型和效果預覽 本專案後端採用spring boot +spring data jpa的技術實現
Java IO位元組流操作及實現記事本Application小程式
JFrame方面的就不做介紹了,下面介紹IO流的知識 程式中主要使用了java IO 中的兩個類: 兩個位元組流操作的類 位元組流的寫:FileOutputStream 繼承OutputStream 從位元組流讀資料:FileInputStream 繼承 InputStre
java運用面向物件的思想實現計算器的小程式
其實,覺得最重要的就是這裡的這樣的一段核心程式碼。 package org.lenovo.demo; public class OperationFactory { public static Operation createOperation(String oper
java實現對稱加密AES和DES的加密、解密
目前主流的加密方式有:1、對稱加密:AES、DES 2、非對稱加密:RSA、DSA。 本文主要講解java實現呼叫AES/DES加密演算法包,呼叫過程最精要的就是下面兩句話: Cipher cipher = Cipher.getIn
微信小程式使用者資訊解密
文章不是很全面,只是截取了專案內容的一部分,不明白的地方可以私信。當初之所以要去解密使用者資料,只是為了拿到unionId,說來奇怪,其實微信的登入憑證校驗介面(https://api.weixin.qq.com/sns/jscode2session?appid=APPID&
java實現微信小程序服務端(登錄)
value ssi 讀取 ive ping 我們 不存在 @param 感受 java實現微信小程序服務端 微信小程序如今被廣泛使用,微信小程序按照微信官網的定義來說就是: 微信小程序是一種全新的連接用