摘要:系統交互流程授權碼生成加密解密算法算法名稱算法名稱加密模式填充方式編碼生成密鑰對象密鑰字符串密鑰對象加密數據待加密數據密鑰加密后的數據實例化對象,它用于完成實際的加密操作初始化對象,設置為加密模式執(zhí)行加密操作。
系統交互流程(OAuth2.0) 授權碼生成 加密解密算法(AES)
import org.apache.commons.codec.binary.Base64; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.security.InvalidKeyException; import java.security.Key; import java.security.NoSuchAlgorithmException; import java.security.spec.InvalidKeySpecException; /** * @author liuzhongxu * @date 2019/4/16 */ public class AESUtil { /** * 算法名稱 */ public static final String KEY_ALGORITHM = "AES"; /** *算法名稱/加密模式/填充方式 */ public static final String CIPHER_ALGORITHM = "AES/CBC/PKCS5Padding"; /** * 編碼 */ public static final String CHARSET_NAME = "UTF-8"; /** * * 生成密鑰key對象 * @param keyStr 密鑰字符串 * @return 密鑰對象 * @throws InvalidKeyException * @throws NoSuchAlgorithmException * @throws InvalidKeySpecException * @throws Exception */ private static SecretKey keyGenerator(String keyStr) throws Exception { SecretKeySpec secretKey = new SecretKeySpec(keyStr.getBytes(CHARSET_NAME), KEY_ALGORITHM); return secretKey; } /** * 加密數據 * @param data 待加密數據 * @param key 密鑰 * @return 加密后的數據 */ public static String encrypt(String data, String key) throws Exception { Key secretKey = keyGenerator(key); IvParameterSpec iv = new IvParameterSpec(key.getBytes(CHARSET_NAME)); // 實例化Cipher對象,它用于完成實際的加密操作 Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM); // 初始化Cipher對象,設置為加密模式 cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv); byte[] results = cipher.doFinal(data.getBytes(CHARSET_NAME)); // 執(zhí)行加密操作。加密后的結果通常都會用Base64編碼進行傳輸 return Base64.encodeBase64String(results); } /** * 解密數據 * @param data 待解密數據 * @param key 密鑰 * @return 解密后的數據 */ public static String decrypt(String data, String key) throws Exception { Key secretKey = keyGenerator(key); IvParameterSpec iv = new IvParameterSpec(key.getBytes(CHARSET_NAME)); Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM); //初始化Cipher對象,設置為解密模式 cipher.init(Cipher.DECRYPT_MODE, secretKey, iv); // 執(zhí)行解密操作 return new String(cipher.doFinal(Base64.decodeBase64(data))); } public static void main(String[] args) throws Exception { String source = "工作模式-->>ECB:電子密碼本模式、CBC:加密分組鏈接模式、CFB:加密反饋模式、OFB:輸出反饋模式"; System.out.println("原文: " + source); String key = "A1B2C3D4A1B2C3D4"; String encryptData = encrypt(source, key); System.out.println("加密后: " + encryptData); String decryptData = decrypt(encryptData, key); System.out.println("解密后: " + decryptData); } }計算簽名
/** * 計算簽名 */ private static String calculateSign(String source, String accessSecret) throws InvalidKeyException { try { //HmacSHA256加密 Mac mac = Mac.getInstance("HmacSHA256"); mac.init(new SecretKeySpec(accessSecret.getBytes("UTF-8"), "HmacSHA256")); byte[] signData = mac.doFinal(source.getBytes("UTF-8")); //bas64加密 return Base64.getEncoder().encodeToString(signData); } catch (NoSuchAlgorithmException e) { throw new RuntimeException("HMAC-SHA1 not supported."); } catch (UnsupportedEncodingException e) { throw new RuntimeException("UTF-8 not supported."); } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/77703.html
摘要:于年成立移動邊緣計算規(guī)范工作組,正式宣布推動移動邊緣計算標準化工作。其基本思想是把云計算平臺從移動核心網絡內部遷移到移動接入網邊緣,實現計算及存儲資源的彈性利用。 本文選自最近人民郵電出版社新書《從云端到邊緣:邊緣計算的產業(yè)鏈與行業(yè)應用》第一章第二節(jié)5G時代的邊緣計算,作者吳冬升,5G產...
摘要:本文單純從簡單的技術實現來講,不涉及開放平臺的多維度的運營理念。它的特點就是通過客戶端的后臺服務器,與服務提供商的認證服務器進行互動能夠滿足絕大多數開放平臺認證授權的需求。 本文單純從簡單的技術實現來講,不涉及開放平臺的多維度的運營理念。 什么是開放平臺 通過開放自己平臺產品服務的各種API接口,讓其他第三方開發(fā)者在開發(fā)應用時根據需求直接調用,例如微信登錄、QQ登錄、微信支付、微博登錄...
摘要:本文單純從簡單的技術實現來講,不涉及開放平臺的多維度的運營理念。它的特點就是通過客戶端的后臺服務器,與服務提供商的認證服務器進行互動能夠滿足絕大多數開放平臺認證授權的需求。 本文單純從簡單的技術實現來講,不涉及開放平臺的多維度的運營理念。 什么是開放平臺 通過開放自己平臺產品服務的各種API接口,讓其他第三方開發(fā)者在開發(fā)應用時根據需求直接調用,例如微信登錄、QQ登錄、微信支付、微博登錄...
2013年,你是甲方,我是乙方,我為你云適配。 2014年,我的地盤你做主,云適配攻城獅們的工作陣地將全權授權給你,你可以自由的 DIY 您的網站,No more time,No Money,只要1天,只要1個人,只要2步,云適配開放平臺一站搞定,您的跨屏網站即刻誕生了!!! BUT,BUT,BUT,在你開始完全做主前,我們想邀請您來參與云適配開放平臺的內測,只要您具備最基礎的前端開發(fā)技術,擁有一...
閱讀 883·2021-11-22 12:04
閱讀 2087·2021-11-02 14:46
閱讀 614·2021-08-30 09:44
閱讀 2098·2019-08-30 15:54
閱讀 714·2019-08-29 13:48
閱讀 1586·2019-08-29 12:56
閱讀 3440·2019-08-28 17:51
閱讀 3279·2019-08-26 13:44