1. 程式人生 > >java實現AES加密解密

java實現AES加密解密

package com.utils;

import org.apache.tomcat.util.codec.binary.Base64;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;

/**
 * Created by IntelliJ IDEA
 * <p>〈類詳細描述〉 </p> * 〈功能詳細描述〉
 * @date 2017/5/12
 * @time 10:40
 * @version 1.0
*/ public class AES { public static final String CHAR_ENCODING = "UTF-8"; public static final String AES_ALGORITHM = "AES/ECB/PKCS5Padding"; public static byte[] encrypt(byte[] data, byte[] key) { if(key.length!=16){ throw new RuntimeException("Invalid AES key length (must be 16 bytes)"
); } try { SecretKeySpec secretKey = new SecretKeySpec(key, "AES"); byte[] enCodeFormat = secretKey.getEncoded(); SecretKeySpec seckey = new SecretKeySpec(enCodeFormat,"AES"); Cipher cipher = Cipher.getInstance(AES_ALGORITHM);// 建立密碼器 cipher.init(Cipher.ENCRYPT_MODE
, seckey);// 初始化 byte[] result = cipher.doFinal(data); return result;// 加密 } catch (Exception e){ throw new RuntimeException("encrypt fail!", e); } } /** * 解密 * * @param / content * 待解密內容 * @param /password * 解密金鑰 * @return */ public static byte[] decrypt(byte[] data, byte[] key) { if(key.length!=16){ throw new RuntimeException("Invalid AES key length (must be 16 bytes)"); } try { SecretKeySpec secretKey = new SecretKeySpec(key, "AES"); byte[] enCodeFormat = secretKey.getEncoded(); SecretKeySpec seckey = new SecretKeySpec(enCodeFormat, "AES"); Cipher cipher = Cipher.getInstance(AES_ALGORITHM);// 建立密碼器 cipher.init(Cipher.DECRYPT_MODE, seckey);// 初始化 byte[] result = cipher.doFinal(data); return result; // 加密 } catch (Exception e){ throw new RuntimeException("decrypt fail!", e); } } public static String encryptToBase64(String data, String key){ try { byte[] valueByte = encrypt(data.getBytes(CHAR_ENCODING), key.getBytes(CHAR_ENCODING)); return new String(Base64.encodeBase64(valueByte,false)); } catch (UnsupportedEncodingException e) { throw new RuntimeException("encrypt fail!", e); } } public static String decryptFromBase64(String data, String key){ try { byte[] originalData = Base64.decodeBase64(data.getBytes()); byte[] valueByte = decrypt(originalData, key.getBytes(CHAR_ENCODING)); return new String(valueByte, CHAR_ENCODING); } catch (UnsupportedEncodingException e) { throw new RuntimeException("decrypt fail!", e); } } public static void main(String[] args) throws UnsupportedEncodingException { String key = "0123456789012345"; String s = "sadkamkmk4584515"; //byte [] a = key.getBytes("UTF-8"); //System.out.println(a.length); String s2 = "fOz76GnwQ7cG76QrPj+7+pY6IW0XmaHp0VutFEQSbyk="; String r = encryptToBase64(s,key); String j = decryptFromBase64(s2,key); System.out.println(r); System.out.println(j); } }

相關推薦

java實現AES加密解密

package com.utils; import org.apache.tomcat.util.codec.binary.Base64; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpe

java和js實現aes加密解密

由於公司安全測試,要對重要資訊進行加密傳輸,使得java、android、ios一致。 java程式碼 package gov.communitycloud.user.utils; import java.math.BigInteger; import javax.cr

Java實現AES加密解密

/** * @param content * @return String * @Description:解密流程: * 1.同加密1-4步 * 2.將加密後的字串反紡成byte[]陣列 * 3.將加密內容解密 */ public stati

C# 實現AES加密--解密

bsp 密文 rem adding gets manage string sys cipher /// <summary> /// AES 加密 /// </summary> ///

Java實現AES加密(轉)

密鑰 工具 mex 嚴格 keys 生產 ner for 創建 一)什麽是AES? 高級加密標準(英語:Advanced Encryption Standard,縮寫:AES),是一種區塊加密標準。這個標準用來替代原先的DES,已經被多方分析且廣為全世界所使用。 那麽為什麽

條理清晰的入門:使用Java實現RSA加密解密

條理清晰的入門:使用Java實現RSA加密解密 什麼是RSA 使用Java 需要匯入的標頭檔案 生成公鑰、私鑰 進行加密解密 金鑰的儲存 密文的儲存、讀取 什麼是RSA 翻一下以前的密碼

CTR分組模式實現AES加密解密(go語言)

版權宣告:本文為作者原創,如需轉載,請註明出處 https://blog.csdn.net/weixin_42940826 AES演算法簡介 AES演算法是為了取代DES演算法而生,雖然3DES演算法仍然可以使用,但是效率比較低下,AES演算法是在眾多演算法中選拔

Python實現AES加密解密

import base64 from Crypto.Cipher import AES def aes_encrypt(value): ''' >>> aes_en

JAVA實現RSA加密解密

RSA 工具類。提供加密,解密,生成金鑰對等方法。  RSA加密原理概述   : RSA的安全性依賴於大數的分解,公鑰和私鑰都是兩個大素數(大於100的十進位制位)的函式。 據猜測,從一個金鑰和密文推斷出明文的難度等同於分解兩個大素數的積    金鑰的產生:     1.選

JAVA 實現AES加密的兩種方法

寫在前面的話:    1.建議加密後將密文轉為16進位制的字串(便於觀看)。    2.以下的兩種加密的方法金鑰不限定長度。[java] view plain copy print?/**  *AES加密解密工具類  *@author M-Y  */  public clas

python實現aes加密解密,RSA簽名和驗籤,RSA加密解密,並呼叫介面

用python實現呼叫介面的示例程式碼,過程涉及到很多的加密演算法,值得分享一下。首先公鑰和私鑰如何生成,並且能相容java平臺,嘗試了很多方法。最終決定用openssl命令前提,需要安裝openssl,Crypto庫生成公鑰私鑰對過程:生成私鑰: openssl ge

Java實現DES加密解密演算法

import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFact

Java實現AES加密

一、什麼是AES? AES:Advanced Encrypt Standard 高階加密標準。使用AES是為了代替原先的DES,現如今已被廣泛使用。 相較於DES,使用56位祕鑰,比較容易被破解。AES可以使用128、192和256位祕鑰,並且使用128位分組加密和解密資

java使用AES加密解密 AES-128-ECB加密

http://www.cnblogs.com/chen-lhx/p/5817161.html *************************************************** import javax.crypto.Cipher; import jav

Java實現AES加密,異常java.security.InvalidKeyException: Illegal key size 的解決

sta extension ons jdk mit jar文件 目錄 jdk7 ase Java實現AES加密,拋出異常如下:java.security.InvalidKeyException: Illegal key size 代碼參考 http://my.oschi

Java 實現 RSA加密解密及數字簽名

RSA公鑰加密演算法是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。當時他們三人都在麻省理工學院工作。RSA就是他們三人姓氏開頭字母拼在一起組成的。 RSA是目

java實現AES解密

在資料的傳輸過程中,對於敏感的資料通常會進行加密操作。下面是AES對敏感資料加密的實現。 1.程式碼: public class AesTest {     private final static String algorithm = "AES/CBC/PKCS5Padding";// AES/ECB/PK

C# 實現 JAVA AES加密解密[原創]

com base gets tran con spec ole tor 技術分享 以下是網上普遍能收到的JAVA AES加密解密方法。 因為裏面用到了KeyGenerator 和 SecureRandom,但是.NET 裏面沒有這2個類。無法使用安全隨機數生成KEY。 我們

ruby 實現java中的aes 加密解密

abcde class hwm nbsp crypt 實現 () cbc sad def aes_encrypt() cipher = OpenSSL::Cipher::AES.new(128, :CBC) cipher.encrypt cipher.key =

java實現AES的簡單加密解密

AESUtil package com.zhuyun.aes; import java.io.IOException; import javax.crypto.Cipher; import ja