AES 加密 解密(Hex編碼解碼)
Aes加密解密方法使用Hex進行了編碼解碼
這個方法在正式的專案中已經在使用木有問題,注意這裡的AES加密解密你要要對哦……package com.baidu.wallet.bdwallet.utils; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.DecoderException; import org.apache.commons.codec.binary.Hex; public class Test { private static final String AES="AES"; private static final String UTF8="UTF-8"; /** * AES加密 * @param content * @param pkey * @return * @throws DecoderException */ private static byte[] encrypt(String content, String pkey) throws DecoderException { try { String private_key=pkey; byte[] encodeFormat=null; try { //祕鑰 Hex解碼為什麼祕鑰要進行解碼,因為祕鑰是某個祕鑰明文進行了Hex編碼後的值,所以在使用的時候要進行解碼 encodeFormat = Hex.decodeHex(private_key.toCharArray()); } catch (DecoderException e) { e.printStackTrace(); } SecretKeySpec key = new SecretKeySpec(encodeFormat, AES); // Cipher物件實際完成加密操作 Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); // 加密內容進行編碼 byte[] byteContent = content.getBytes(UTF8); // 用密匙初始化Cipher物件 cipher.init(Cipher.ENCRYPT_MODE, key); // 正式執行加密操作 byte[] result = cipher.doFinal(byteContent); return result; } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } return null; } /** * AES解密 * @param contents * @param password * @return * @throws DecoderException */ private static byte[] decrypt(String contents, String password) throws DecoderException { try { //密文使用Hex解碼 byte[]content = Hex.decodeHex(contents.toCharArray()); //祕鑰 Hex解碼為什麼祕鑰要進行解碼,因為祕鑰是某個祕鑰明文進行了Hex編碼後的值,所以在使用的時候要進行解碼 byte[] encodeFormat = Hex.decodeHex(password.toCharArray()); SecretKeySpec key = new SecretKeySpec(encodeFormat, AES); // Cipher物件實際完成加密操作 Cipher cipher = Cipher.getInstance(AES); // 用密匙初始化Cipher物件 cipher.init(Cipher.DECRYPT_MODE, key); // 正式執行解密操作 byte[] result = cipher.doFinal(content); return result; } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } return null; } /** * Aes加密 * @param context 明文 * @param private_key 祕鑰 * @return * @throws DecoderException */ public static String encryption(String context,String private_key) throws DecoderException{ //加密後的明文也就變成了密文 byte[] encryptResult = encrypt(context, private_key); //密碼文Hex編碼 String encryptResultStr = Hex.encodeHexString(encryptResult); return encryptResultStr; } /** * Aes解密 * @param context 密文 * @param private_key 祕鑰 * @return * @throws DecoderException * @throws UnsupportedEncodingException */ public static String decryption(String context,String private_key) throws DecoderException, UnsupportedEncodingException{ //這裡的密文解密前先進行了Hex解碼 byte[] decryptResult = decrypt(context, private_key); String result = new String(decryptResult, UTF8); return result; } public static void main(String[] args) throws UnsupportedEncodingException, DecoderException { //加密內容 String content = "123456787654321"; //AES加密解密祕鑰 String password = "這個值一般都是給定的,雙發都知道"; // 加密 System.out.println("加密前:" + content); // 呼叫加密方法 String encryptResultStr = encryption(content, password); System.out.println("加密後:" + encryptResultStr); // 呼叫解密方法 String result = decryption(encryptResultStr, password); // 解密內容進行解碼 System.out.println("解密後:" + result); } }
上面使用的就是org.apache.commons.codec.binary.Hex這個類的方法,在maven中配置如下:
注意:這裡要使用1.4以及以上版本,應為1.4以下的沒有Hex.encodeHexString(byte[])這個方法!<dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.4</version> </dependency>
相關推薦
AES 加密 解密(Hex編碼解碼)
Aes加密解密方法使用Hex進行了編碼解碼 package com.baidu.wallet.bdwallet.utils; import java.io.UnsupportedEncodingException; import java.security.Inval
AES加密解密(工具類+例項)
工具類: package com.valueaddedservices.web.utils; import java.util.Date; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec;
CTR分組模式實現AES加密解密(go語言)
版權宣告:本文為作者原創,如需轉載,請註明出處 https://blog.csdn.net/weixin_42940826 AES演算法簡介 AES演算法是為了取代DES演算法而生,雖然3DES演算法仍然可以使用,但是效率比較低下,AES演算法是在眾多演算法中選拔
android AES加密解密(最新版)
專案中要用到AES加密,百度上的AES壓根不能用,也不知道是那年的東西了,和後臺不相容,後來,後臺把他的AES程式碼拷給我 通過PHP程式碼找到了對應的Android程式碼 原文地址:http://www.funboxpower.com/php_android_ios_a
32位AES加密解密(AES/ECB/PKCS7Padding)
兩個問題:1. 金鑰超出了JDK預設的長度128時會報錯:java.security.InvalidKeyException: Illegal key size or default parameters(參考別人的)因為美國的出口限制,Sun通過許可權檔案(local_po
java 按位元組讀寫二進位制檔案(Base64編碼解碼)
最近在做專案時遇到這樣一個需求:依次讀取本地資料夾裡所有檔案的內容,轉為JSON,傳送到ActiveMQ的訊息佇列, 然後從MQ的訊息佇列上獲取檔案的資訊,依次寫到本地。常見的檔案型別,比如.txt 和.png等檔案的讀寫並不難。但是,我剛才所提到的需求,如果用常規的方法去讀寫,比如按位元組讀取檔案內容
java 按字節讀寫二進制文件(Base64編碼解碼)
h+ lee bean 字節數組 inpu 讀取 write bytearray 轉換工具類 最近在做項目時遇到這樣一個需求:依次讀取本地文件夾裏所有文件的內容,轉為JSON,發送到ActiveMQ的消息隊列, 然後從MQ的消息隊列上獲取文件的信息,依次寫到本地。常見的文
線上BASE64加密解密、UrlEncode編碼/解碼、native/ascii線上轉換工具 -toolfk程式設計師工具網
程式碼教學 本工具[線上BASE64加密解密、UrlEncode編碼/解碼、native/ascii線上轉換工具]依賴的程式碼庫為 STEP 1 STEP 2 核心程式碼如下 function base64_encode(message)
Java 3DES加密解密(Commons.Codec Base64)
依賴包import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.binary.Base64;演算法程式碼 /** * 轉換成十六進位制字串 * @
javaweb網頁上傳圖片並顯示在頁面上,並在服務端存到磁碟(base64編碼解碼)
最後 服務端接收到頁面傳過來的全部的BASE64編碼後 public String uploadimgsave(String imagepath){ String url = ""; OutputStream os=null; String ImgPath="D:/img"; //檔案存放目
AES 加密 解密 Hex編碼解碼
最近做小程式使用者ID驗證的問題,文明傳遞有風險,所以想加密再傳送使用者ID,找了些加密的方法, 最開始想用MD5加密,以前有過這樣的加密方式,現在換一種RES方式 對應的一組公鑰和私鑰加密方式, /** * @author lmc * @version d
php aes加密解密類(兼容php5、php7)
bytes pri rip dom ase lee vat idea cipher <?php /** * @desc:php aes加密解密類 * @author [Lee] <[<[email protected]>]> */ class
java AES 加密解密工具(Advanced Encryption Standard)
@param key block 生成 utf i++ spec res null 1、通用方法 package com.qlkj.hzd.commom.utils; import javax.crypto.*; import java.io.Unsupported
工具篇——AESCBCUtil(用於AES加密解密)
寫程式碼的四點: 1.明確需求。要做什麼? 2.分析思路。要怎麼做?(1,2,3……) 3.確定步驟。每一個思路要用到哪些語句、方法和物件。 4.程式碼實現。用具體的語言程式碼將思路實現出來。 學習新技術的四點:
使用AES演算法對檔案進行加密解密(JAVA+Eclipse)
一、專案中引用第三方類庫的方法 Bouncy Castle類庫的用法(如何在自己的專案中使用第三方類庫) 1)手動配置 將.jar,src,javadoc拷到專案目錄下 專案名,右鍵選build path-configure build path
Openssl及加密解密(二)openssl
opensslopenssl是一個條件實現了上百種算法、實現了單向加密工具等一組套件,代碼量很小但是功能強大。它有三部分組成:libcrypto:通用功能的加密庫,軟件開發時可以直接調用libssl:實現TLS/SSL的功能openssl:多功能命令行工具,加密、解密、創建CA、證書、一對秘鑰等openssl
C/C++使用openssl進行摘要和加密解密(md5, sha256, des, rsa)
fin hex pau 字節 system org key rate 釋放 openssl裏面有很多用於摘要哈希、加密解密的算法,方便集成於工程項目,被廣泛應用於網絡報文中的安全傳輸和認證。下面以md5,sha256,des,rsa幾個典型的api簡單使用作為例子。
Maven項目的RSA加密及解密(用戶數據)的配置流程:
nts iic params replace irf contains czc mapping cte 做過三年多的程序員了,之前同事們都喜歡發表博客文章 而鄙人特例。 一般都是看文章,畢竟有現成的糧食,幹嘛還多此一舉額,呵呵。 也就沒想著註冊一下賬號 就在前不
字符串加密解密(Base64)
bcd base64 else if 字符 utf-8 base Coding ase NPU var Base64 = { // private property _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkl
ASC加密解密(筆記)
涉及變數: // 加密密碼:key==>springblade //content==>需要加密的內容 &nb