Java實現AES加密和解密
/** * @param content * @return String * @Description:解密流程: * 1.同加密1-4步 * 2.將加密後的字串反紡成byte[]陣列 * 3.將加密內容解密 */ public static String invokeDecryptEncode(String content) { String resultEncode = ""; try { /** * //[1].利用KeyGenerator構造金鑰生成器,指定為AES演算法,不區分大小寫 KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); //[2].根據encryptEncodeRules規則初始化金鑰生成器,生成一個128位的隨機源,根據傳入的位元組陣列,實現隨機數演算法 SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); random.setSeed(encryptEncodeRules.getBytes()); keyGenerator.init(128, random); //[3].產生原始對稱金鑰 SecretKey originalKey = keyGenerator.generateKey(); //[4].獲得原始對稱金鑰的位元組陣列 byte[] rawByte = originalKey.getEncoded(); //[5].根據位元組陣列生成AES金鑰 SecretKey secretKey = new SecretKeySpec(rawByte, "AES"); //[6].根據指定演算法AES自成密碼器 Cipher cipher = Cipher.getInstance("AES"); * 以上同加密流程 */ KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); random.setSeed(encryptEncodeRules.getBytes()); keyGenerator.init(128, random); SecretKey originalKey = keyGenerator.generateKey(); byte[] byteArray = originalKey.getEncoded(); SecretKey secretKey = new SecretKeySpec(byteArray, "AES"); Cipher cipher = Cipher.getInstance("AES"); //[7]將加密並編碼後的內容解碼成位元組陣列 cipher.init(Cipher.DECRYPT_MODE, secretKey); //[8]解密密文 byte[] byteContent = new BASE64Decoder().decodeBuffer(content); byte[] byteEncode = cipher.doFinal(byteContent); resultEncode = new String(byteEncode, "utf-8"); return resultEncode; } catch (NoSuchAlgorithmException exception) { exception.printStackTrace(); } catch (NoSuchPaddingException exception) { exception.printStackTrace(); } catch (InvalidKeyException exception) { exception.printStackTrace(); } catch (UnsupportedEncodingException exception) { exception.printStackTrace(); } catch (IllegalBlockSizeException exception) { exception.printStackTrace(); } catch (BadPaddingException exception) { exception.printStackTrace(); } catch (IOException exception) { exception.printStackTrace(); } return resultEncode; }
測試:
相關推薦
Java實現AES加密和解密
/** * @param content * @return String * @Description:解密流程: * 1.同加密1-4步 * 2.將加密後的字串反紡成byte[]陣列 * 3.將加密內容解密 */ public stati
用java實現簡易加密和解密
實現原理: 通過位運算的異或運算子“^”把字串與一個指定的值進行異或運算,從而改變字串中的每個字元的值,這樣就可以得到一個加密後的字串。傳送後再將加密後的字串通過源程式實現解
C#實現AES加密和解密函式
AES簡介 AES(The Advanced Encryption Standard)是美國國家標準與技術研究所用於加密電子資料的規範。它被預期能成為人們公認的加密包括金融、電信和政府數字資訊的方法。 AES 是一個新的可以用於保護電子資料的加密演算法。明確地說,AES 是
Java實現Base64加密和解密
Base64是一種編碼格式,而不是演算法。 首先引入Base64類庫的maven依賴 <dependency> <groupId>com.xiaoleilu</groupId> <
python 實現AES加密和解密
aes port 加密算 偏移量 blog utf-8 加密和解密 sda return 參考 https://blog.csdn.net/zhchs2012/article/details/79032656 AES加密算法是一種對稱加密算法, 他有一個密匙, 即用來加密,
JavaScript前端和Java後端的AES加密和解密
proto creat eight prop pen 保持 超出範圍 system creator 在實際開發項目中,有些數據在前後端的傳輸過程中需要進行加密,那就需要保證前端和後端的加解密需要統一。這裏給大家簡單演示AES在JavaScript前端和Java後端是如何實現
java的對稱加密演算法 AES -----加密和解密
背景 隨著對稱密碼的發展,DES資料加密標準演算法由於金鑰長度較小(56位),已經不適應當今分散式開放網路對資料加密安全性的要求,因此1997年NIST公開徵集新的資料加密標準,即AES[1]。經過三輪的篩選,比利時Joan Daeman和Vincent Rijmen提
js和java中的AES加密和解密
每次都要在這個問題上耗費一天的時間,所以這次留下記錄免得以後麻煩。 JS端使用CryptoJS,服務端bouncy castle提供的AES演算法。 AES演算法採用“AES/CBC/PKCS7Padding”,這個在JS和JAVA中都支援。Java預設的加
java實現AES加密解密
package com.utils; import org.apache.tomcat.util.codec.binary.Base64; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpe
iOS開發-Objective-c的AES加密和解密演算法的實現
話不多說,直接上程式碼 .h import <Foundation/Foundation.h> @interface LanAES : NSObject +(NSData *)AES256ParmEncryptWithKey:(NSString *
使用Python進行AES加密和解密
Coding color www tor 修改 1年 add 思想 href 摘錄於:http://blog.csdn.net/nurke/article/details/77267081 另外參考:http://www.cnblogs.com/kaituorensheng
用Java實現AES加密(轉)
密鑰 工具 mex 嚴格 keys 生產 ner for 創建 一)什麽是AES? 高級加密標準(英語:Advanced Encryption Standard,縮寫:AES),是一種區塊加密標準。這個標準用來替代原先的DES,已經被多方分析且廣為全世界所使用。 那麽為什麽
php和java中的加密和解密
padding 而不是 bsp enc openss 解密 div des算法 -c 遇到的java代碼如下: Cipher cipher=Cipher.getInstance("DESede/CBC/PKCS5Padding"); 在php中使用des算法 始終校驗不
h5棋牌源碼租用Java的MD5加密和解密類
哈希函數 網絡問題 pri rgs update array 重要 和數 下載 理解MD5MD5的應用非常廣泛h5棋牌源碼租用(h5.hxforum.com)聯系170618633533企鵝2952777280(http://yhgj8004.com)源碼出售 房卡出售
VUE中的 AES加密和解密
加密 pad aes加密 加密和解密 解密 如果 name con ase import CryptoJS from ‘crypto-js/crypto-js‘ // 默認的 KEY 與 iv 如果沒有給 const KEY = CryptoJS.enc.Utf8.pa
Java Base64位加密和解密
edt .com 比較 兩個 word mis 表示 而且 .get 鏈接https://blog.csdn.net/longguangfu8/article/details/78948213 關於base64編碼Encode和Decode編碼的幾種方式 Base64是一種
Python進行AES加密和解密
本文參考於部落格:http://www.cnblogs.com/kaituorensheng/p/4501128.html 高階加密標準(英語:Advanced Encryption Standard,縮寫:AES),在密碼學中又稱Rijndael加密法,是美國聯邦政府採用的一種區塊加密標準。這
Java的MD5加密和解密
import java.security.*; import java.security.spec.*; class MD5_test { public final static String MD5(String s) {
golang實現DES加密和解密
package main import ( "bytes" "crypto/des" "crypto/cipher" "fmt" ) func padding(src []byte,blocksize int) []byte { n:=len(src) pad
golang實現RSA加密和解密
package main import ( "crypto/rsa" "crypto/rand" "crypto/x509" "encoding/pem" "os" "fmt" ) func rsaGenKey(bits int) error { priva