java使用AES加密解密 AES-128-ECB加密
http://www.cnblogs.com/chen-lhx/p/5817161.html
***************************************************
import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; /** * * @author Administrator * */ public class AES { // 加密 public static String Encrypt(String sSrc, String sKey) throws Exception { if (sKey == null) { System.out.print("Key為空null"); return null; } // 判斷Key是否為16位 if (sKey.length() != 16) { System.out.print("Key長度不是16位"); return null; } byte[] raw = sKey.getBytes("utf-8"); SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");//"演算法/模式/補碼方式" cipher.init(Cipher.ENCRYPT_MODE, skeySpec); byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8")); return new Base64().encodeToString(encrypted);//此處使用BASE64做轉碼功能,同時能起到2次加密的作用。 } // 解密 public static String Decrypt(String sSrc, String sKey) throws Exception { try { // 判斷Key是否正確 if (sKey == null) { System.out.print("Key為空null"); return null; } // 判斷Key是否為16位 if (sKey.length() != 16) { System.out.print("Key長度不是16位"); return null; } byte[] raw = sKey.getBytes("utf-8"); SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE, skeySpec); byte[] encrypted1 = new Base64().decode(sSrc);//先用base64解密 try { byte[] original = cipher.doFinal(encrypted1); String originalString = new String(original,"utf-8"); return originalString; } catch (Exception e) { System.out.println(e.toString()); return null; } } catch (Exception ex) { System.out.println(ex.toString()); return null; } } public static void main(String[] args) throws Exception { /* * 此處使用AES-128-ECB加密模式,key需要為16位。 */ String cKey = "1234567890123456"; // 需要加密的字串 String cSrc = "www.gowhere.so"; System.out.println(cSrc); // 加密 String enString = AES.Encrypt(cSrc, cKey); System.out.println("加密後的字串是:" + enString); // 解密 String DeString = AES.Decrypt(enString, cKey); System.out.println("解密後的字串是:" + DeString); } } //原始碼片段來自雲程式碼http://yuncode.net
android
package cd.server.data; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import android.annotation.SuppressLint; import android.util.Base64; // http://blog.csdn.net/hbcui1984/article/details/5201247 // AES加密解密工具類 public class AES128 { private static final String UTF_8 = "UTF-8"; /** * 加密 * @param content 需要加密的內容 * @param password 加密密碼 * @return */ @SuppressLint ("TrulyRandom") public static String encrypt(String key, String src) { try { if(key == null || key.length() <= 0 || src == null || src.length() <= 0) return null; SecretKeySpec skey = new SecretKeySpec(key.getBytes(), "AES"); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); byte[] byteContent = src.getBytes(UTF_8); cipher.init(Cipher.ENCRYPT_MODE, skey);// 初始化 byte[] result = cipher.doFinal(byteContent); return byte2Base64(result); // 加密 } catch (Exception ext) { ext.printStackTrace(); } return null; } private static String byte2Base64(byte[] encode) { try { return Base64.encodeToString(encode, Base64.NO_WRAP); } catch (Exception ext) { ext.printStackTrace(); } return null; } }
相關推薦
java使用AES加密解密 AES-128-ECB加密
http://www.cnblogs.com/chen-lhx/p/5817161.html *************************************************** import javax.crypto.Cipher; import jav
java.. C# 使用AES加密互解 采用AES-128-ECB加密模式
convert odi summary for number als name apache base java需要下載外部包, commons codec.jar 1.6 較新的JAVA版本把Base64的方法改成靜態方法,可能會寫成Base64.encodeToStr
AES-128 ECB 加密有感
最近要搞一個加密。很是蛋疼。 原本微控制器和上位機發送資料就是非常簡單的。 這個專案相當複雜。每次資料命令都差不多1K,一次資料都要1K以上。是通過GPRS傳送的。 這些難纏的問題再前一階段已經解決了。 現在老師,還讓我們做AES加密。是對我們做控制的人來說還確實有點難度啊 。 寫的詳單詳細。 我再囉嗦一
微信AES-128-CBC加密解密
brush sha 解密 method pre tcl int cipher ++ [TestClass] public class UnitTest1 { [TestMethod] public void TestMeth
java AES 128 位加密解密演算法
最近在做app後臺的伺服器,使用到AES加密解密演算法,無奈網上的都不符合要求,於是自己借鑑著寫了一個AES加密解密工具。 金鑰長度問題 預設 Java 中僅支援 128 位金鑰,當使用 256 位金鑰的時候,會報告金鑰長度錯誤 Invalid AES
nodejs中aes-128-cbc加密和解密
和java程式進行互動的時候,java那邊使用AES 128位填充模式:AES/CBC/PKCS5Padding加密方法,在nodejs中採用對應的aes-128-cbc加密方法就能對應上,因為有使用向量(iv),所以nodejs中要用createCiphe
java加密解密技術(3)對稱加密AES
import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; imp
[小程式碼]在Android和PHP之間的加密/解密,AES加密
Android和PHP上的加、解密字串。 android上使用: mcrypt = new MCrypt(); /* 加密*/ String encrypted = MCrypt.bytesToHex( mcrypt.encrypt("需加密的字元") ); /* 解密*
Java對稱與非對稱加密解密,AES與RSA
加密技術可以分為對稱與非對稱兩種. 對稱加密,解密,即加密與解密用的是同一把祕鑰,常用的對稱加密技術有DES,AES等 而非對稱技術,加密與解密用的是不同的祕鑰,常用的非對稱加密技術有RSA等 為什麼要有非對稱加密,解密技術呢 假設這樣一種場景A要傳送一段訊息給B,但是又
java加密解密AES實現
加密時,先用AES加密,再用base64加密;解密時,先用base64解密,再用AES解密。 import org.apache.commons.io.FileUtils; import sun.misc.BASE64Decoder; import sun.misc.BAS
PHP和Java AES 128 ECB 加解密(PKCS5Padding)
php 和 java 使用 AES128/ECB/PKCS5Padding對稱加解密,簽名使用 HmacSHA256,附帶 php 和 java 程式碼,均為 DEMO 版本,測試通過,實際使用請根據自己專案修改。 最近做專案涉及到一丟丟的安全問題,需
微信小程式開放資料解密 AES-128-CBC 解密(Java版本)
最近朋友在弄微信小程式開發,需要跟微信服務端互動,微信敏感資料都有加密返回,需要在服務端接收進行解密後再返回給客戶端小程式,今天就通過Java進行資料的解密,以下展示是Java程式碼如果你使用的C#,請訪問這個地址(C#版本) https://blog.csdn.net/jasonso
微信小程式開放資料解密 AES-128-CBC 解密(C#版本)
最近朋友在弄微信小程式開發,需要跟微信服務端互動,微信敏感資料都有加密返回,需要在服務端接收進行解密後再返回給客戶端小程式,今天就通過C# 進行資料的解密,以下展示是C# 程式碼如果你使用的Java,請訪問這個地址(Java版本) https://blog.csdn
java aes128位 cfb與gcm加解密 aes-128-cfb aes-128-gcm
Base64.encodeBase64String(secretKey.getEncoded())是apache的commons-codec庫,二進位制經base64編碼為字串 //cfb package com.dddd.codec; import org.apache.comm
Elixis 加密庫 AES MD5等加密
Elixis 是一個C#的加密啊庫,支援 AES、TripleDES和MD5 演算法的加密和解密(MD5是單向的),而且更多加密的演算法還在進一步開發中。 示例程式碼: private static
JAVA加密解密之凱撒加密(Caesar cipher)演算法
凱撒加密演算法簡介 凱撒加密(Caesar cipher)是一種簡單的訊息編碼方式:它根據字母表將訊息中的每個字母移動常量位k。舉個例子如果k等於3,則在編碼後的訊息中,每個字母都會向前移動3位:a會被替換為d;b會被替換成e;依此類推。字母表末尾將回捲到字母
加密解密流程和各加密演算法的選擇、用途
加密演算法的分類: 雙向加密:分為對稱加密和非對稱加密。 對稱加密 採用單鑰密碼系統的加密方法,同一個金鑰可以同時用作資訊的加密和解密,這種加密方法稱為對稱加密,也稱為單金鑰加密。 需要對加密
Java加密解密之非對稱加密
非對稱加密演算法需要兩個金鑰來進行加密和解密,這兩個祕鑰是公開金鑰(public key,簡稱公鑰)和私有金鑰(private key,簡稱私鑰)。使用公鑰加密的,要使用私鑰解密。反之,使用私鑰加密的,要使用公鑰解密。 和對稱加密的區別是: 對稱加密:加密和解密時使用的是
openssl框架閒談--EVP加密/解密介面(附:加密)
openssl 框架中的另一個重頭戲就是EVP介面,它提供了所有的加密和解密實現,不但封裝了已有的著名演算法,而且其簡單易用的介面可以讓你自己輕鬆實現一個演算法,這 就增強了它的可擴充套件性,基本上,openssl只是提供了機制框架,策略由使用者實現。EVP介面的重要資料結構
aes加密解密,含 128、192、256位,cbc、cfb、ecb、ofb、pcbc模式
AES加解密總共有以下這些 演算法/模式/填充 位元組加密後資料長度 不滿16位元組加密後長度 AES/CBC/NoPadding 16