摘要:系統(tǒng)交互流程授權(quán)碼生成加密解密算法算法名稱算法名稱加密模式填充方式編碼生成密鑰對(duì)象密鑰字符串密鑰對(duì)象加密數(shù)據(jù)待加密數(shù)據(jù)密鑰加密后的數(shù)據(jù)實(shí)例化對(duì)象,它用于完成實(shí)際的加密操作初始化對(duì)象,設(shè)置為加密模式執(zhí)行加密操作。
系統(tǒng)交互流程(OAuth2.0) 授權(quán)碼生成 加密解密算法(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對(duì)象 * @param keyStr 密鑰字符串 * @return 密鑰對(duì)象 * @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; } /** * 加密數(shù)據(jù) * @param data 待加密數(shù)據(jù) * @param key 密鑰 * @return 加密后的數(shù)據(jù) */ public static String encrypt(String data, String key) throws Exception { Key secretKey = keyGenerator(key); IvParameterSpec iv = new IvParameterSpec(key.getBytes(CHARSET_NAME)); // 實(shí)例化Cipher對(duì)象,它用于完成實(shí)際的加密操作 Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM); // 初始化Cipher對(duì)象,設(shè)置為加密模式 cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv); byte[] results = cipher.doFinal(data.getBytes(CHARSET_NAME)); // 執(zhí)行加密操作。加密后的結(jié)果通常都會(huì)用Base64編碼進(jìn)行傳輸 return Base64.encodeBase64String(results); } /** * 解密數(shù)據(jù) * @param data 待解密數(shù)據(jù) * @param key 密鑰 * @return 解密后的數(shù)據(jù) */ 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對(duì)象,設(shè)置為解密模式 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); } }計(jì)算簽名
/** * 計(jì)算簽名 */ 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."); } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/77703.html
摘要:于年成立移動(dòng)邊緣計(jì)算規(guī)范工作組,正式宣布推動(dòng)移動(dòng)邊緣計(jì)算標(biāo)準(zhǔn)化工作。其基本思想是把云計(jì)算平臺(tái)從移動(dòng)核心網(wǎng)絡(luò)內(nèi)部遷移到移動(dòng)接入網(wǎng)邊緣,實(shí)現(xiàn)計(jì)算及存儲(chǔ)資源的彈性利用。 本文選自最近人民郵電出版社新書《從云端到邊緣:邊緣計(jì)算的產(chǎn)業(yè)鏈與行業(yè)應(yīng)用》第一章第二節(jié)5G時(shí)代的邊緣計(jì)算,作者吳冬升,5G產(chǎn)...
摘要:本文單純從簡單的技術(shù)實(shí)現(xiàn)來講,不涉及開放平臺(tái)的多維度的運(yùn)營理念。它的特點(diǎn)就是通過客戶端的后臺(tái)服務(wù)器,與服務(wù)提供商的認(rèn)證服務(wù)器進(jìn)行互動(dòng)能夠滿足絕大多數(shù)開放平臺(tái)認(rèn)證授權(quán)的需求。 本文單純從簡單的技術(shù)實(shí)現(xiàn)來講,不涉及開放平臺(tái)的多維度的運(yùn)營理念。 什么是開放平臺(tái) 通過開放自己平臺(tái)產(chǎn)品服務(wù)的各種API接口,讓其他第三方開發(fā)者在開發(fā)應(yīng)用時(shí)根據(jù)需求直接調(diào)用,例如微信登錄、QQ登錄、微信支付、微博登錄...
摘要:本文單純從簡單的技術(shù)實(shí)現(xiàn)來講,不涉及開放平臺(tái)的多維度的運(yùn)營理念。它的特點(diǎn)就是通過客戶端的后臺(tái)服務(wù)器,與服務(wù)提供商的認(rèn)證服務(wù)器進(jìn)行互動(dòng)能夠滿足絕大多數(shù)開放平臺(tái)認(rèn)證授權(quán)的需求。 本文單純從簡單的技術(shù)實(shí)現(xiàn)來講,不涉及開放平臺(tái)的多維度的運(yùn)營理念。 什么是開放平臺(tái) 通過開放自己平臺(tái)產(chǎn)品服務(wù)的各種API接口,讓其他第三方開發(fā)者在開發(fā)應(yīng)用時(shí)根據(jù)需求直接調(diào)用,例如微信登錄、QQ登錄、微信支付、微博登錄...
2013年,你是甲方,我是乙方,我為你云適配。 2014年,我的地盤你做主,云適配攻城獅們的工作陣地將全權(quán)授權(quán)給你,你可以自由的 DIY 您的網(wǎng)站,No more time,No Money,只要1天,只要1個(gè)人,只要2步,云適配開放平臺(tái)一站搞定,您的跨屏網(wǎng)站即刻誕生了?。?! BUT,BUT,BUT,在你開始完全做主前,我們想邀請(qǐng)您來參與云適配開放平臺(tái)的內(nèi)測(cè),只要您具備最基礎(chǔ)的前端開發(fā)技術(shù),擁有一...
閱讀 899·2021-11-22 12:04
閱讀 2101·2021-11-02 14:46
閱讀 622·2021-08-30 09:44
閱讀 2106·2019-08-30 15:54
閱讀 724·2019-08-29 13:48
閱讀 1597·2019-08-29 12:56
閱讀 3451·2019-08-28 17:51
閱讀 3287·2019-08-26 13:44