JAVA加密算法系列-AesCBC

package ***;import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;/**
* AES 是一種可逆加密算法,對用戶的敏感信息加密處理
* 對原始數據進行AES加密后,在進行Base64編碼轉化;
* 正確
*/
public class AesCBC {
/*已確認
* 加密用的Key 可以用26個字母和數字組成
* 此處使用AES-128-CBC加密模式,key需要為16位。
*/private static String sKey="1234567890123456";private static String ivParameter="1234567890123456";private static AesCBC instance=null;//private static private AesCBC(){}public static AesCBC getInstance(){if (instance==null)instance= new AesCBC();return instance;}// 加密public String encrypt(String sSrc, String encodingFormat, String sKey, String ivParameter) throws Exception {Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");byte[] raw = sKey.getBytes();SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());//使用CBC模式,需要一個向量iv,可增加加密算法的強度
        cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);byte[] encrypted = cipher.doFinal(sSrc.getBytes(encodingFormat));return new BASE64Encoder().encode(encrypted);//此處使用BASE64做轉碼。
}// 解密public String decrypt(String sSrc, String encodingFormat, String sKey, String ivParameter) throws Exception {try {byte[] raw = sKey.getBytes("ASCII");SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);byte[] encrypted1 = new BASE64Decoder().decodeBuffer(sSrc);//先用base64解密byte[] original = cipher.doFinal(encrypted1);String originalString = new String(original,encodingFormat);return originalString;} catch (Exception ex) {return null;}
}public static void main(String[] args) throws Exception {// 需要加密的字串String cSrc = "123456";System.out.println("加密前的字串是:"+cSrc);// 加密String enString = AesCBC.getInstance().encrypt(cSrc,"utf-8",sKey,ivParameter);System.out.println("加密后的字串是:"+ enString);System.out.println("1jdzWuniG6UMtoa3T6uNLA==".equals(enString));// 解密String DeString = AesCBC.getInstance().decrypt(enString,"utf-8",sKey,ivParameter);System.out.println("解密后的字串是:" + DeString);}
}

?

轉載于:https://www.cnblogs.com/dava/p/6416638.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253400.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253400.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253400.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

dubbo系列(一)

進入官網之后,找到 http://dubbo.apache.org/en-us/docs/user/quick-start.html 有一個鏈接跳轉到這里 http://dubbo.apache.org/en-us/docs/admin/install/provider-demo.html 使用git將項目下載下來 修改如下Service實現類 1 /*2 * Licensed to the Apache Softw…

基于Flask實現后臺權限管理系統 - 表設計

1.1. 設計 1.1.1. 用戶表 用戶表記錄系統中的所有用戶,是權限管理系統最基本的部分,和其他權限表都有一定的關聯關系,同時,一個還有一個重要的功能:系統登陸。 名稱 數據類型 允許空值 默認值 描述 ID VARCHAR …

DM8168的McSPI/McASP/McBSP接口

McSPI接口 SPI管腳: 管腳 類型 描述 SPI_SCLK I/O SPI串行時鐘(MASTER時:輸出;SLAVE:輸入) SPI_D0 I/O 能被配置為輸入或輸出(MOSI:master out,slave in或MISO&…

Sencha ID的注冊

sencha id的注冊用不著翻墻,直接訪問下面的地址https://www.sencha.com/forum/register.php輸入你的個人信息敞開來注冊,我的注冊名為charlie2018w非常順利的過程你免費注冊的id只能用30天。擁有這個id你就可以在eclipse或者sencha artchitect3或者webst…

ansible安裝

1、簡介 ansible是新出現的自動化運維工具,基于Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。ansible是基于模塊工作的&#…

《大道至簡》第一章偽代碼

o愚公移山偽代碼 Import.java Import.java Punlic class yugongyishan { Public static void main (string [] args) { while(山不平,,) {畢力平險,指通豫南,達于漢陰;叩石墾壤,箕?于渤海之尾;…

Verilog Matlab 聯合仿真

一、概述 在進行仿真時,有時候一部分參考模型(reference model)來自于Matlab,這就需要通過某種方法調用并運行Matlab的參考模型。verilog并不支持直接調用Matlab,但是可以通過DPI接口調用C函數,而Matlab又預…

轉 alsa錄音放音執行流程詳解

前言: linux中,無論是oss還是alsa體系,錄音和放音的數據流必須分析清楚。先分析alsa驅動層,然后關聯到alsa庫層和應用層。 鏈接分析: core/pcm_native.c文件中.mmap snd_pcm_mmap調用snd_pcm_mmap_data(substream, fi…

jenkins之qq企業郵箱配置

一、配置qq企業郵箱 1、登錄jenkins后臺管理,選擇 系統管理 ? 系統設置 2、SMTP server配置 3、郵件通知配置 配置ssl等參數 點擊 高級 4、發送郵件測試 總結:郵箱配置不成程分析 1、管理員賬號和默認發送賬號不一致。2、smtp服務器設置不正確;qq企業…

關于iOS里的做動畫方法的差別與注意事項

CoreAnimation與UIView.animation... 這兩個方式的主要差別在于,前者如果不主動設置,那么在動畫做完以后,會恢復原狀。后者則不會,動畫做完后是什么樣,控件就是什么樣。 UIView.animation...是什么 首先我們來做一個動…

mysql-5.7 持久化統計信息詳解

一、持久化統計信息的意義: 統計信息用于指導mysql生成執行計劃,執行計劃的準確與否直接影響到SQL的執行效率;如果mysql一重啟 之前的統計信息就沒有了,那么當SQL語句來臨時,那么mysql就要收集統計信息然后再生成SQL語…

關于傳感器”英寸“計量

傳感器上的n是指對角線長度為16mm或18mm的n倍 以英寸代指的傳感器大小稱為靶面尺寸。 在CCD/CMOS出現之前,攝像機是利用一種叫作“光導攝像管(Vidicon Tube)”的成像器件感光成像的,這是一種特殊設計的電子管,其直徑的…

關于USB-AUDIO使用ALSA編程的一點問題

轉載自:http://blog.chinaunix.net/uid-25272011-id-3153434.html 最近在調試一款原相PAP7501攝像頭中的USB的麥克風,USB層走的應該是標準的UAC協議,具體可以見USB的官網:http://www.usb.org/developers/devclass_docs#approved&a…

讓input變成不可編輯狀態的方法

有時候&#xff0c;我們希望表單中的文本框是只讀的&#xff0c;讓用戶不能修改其中的信息&#xff0c;如使<input type"text" name"input1" value"中國"> 的內容&#xff0c;"中國"兩個字不可以修改。實現的方式歸納一下&#…

npm run dev 在本地調試出現跨域問題解決方法

npm run dev 在本地調試出現跨域問題 在localhost:8080調試時會出現跨域問題&#xff0c;如圖&#xff1a; 我的項目是用webpack作為前端自動化構建工具&#xff0c;可以在webpack-dev-server中配置跨域。webpack-dev-server是一個小型的nodejs服務器&#xff0c;是基于express…

alsa聲音編程介紹

http://blog.csdn.net/q553716434/article/details/7881552 period(周期):硬件中中斷間的間隔時間。它表示輸入延時。 聲卡接口中有一個指針來指示聲卡硬件緩存區中當前的讀寫位置。只要接口在運行&#xff0c;這個指針將循環地指向緩存區中的某個位置。 frame size sizeof(o…

五、python模塊以及包

模塊&#xff1a;編寫的別的程序中重用一些代碼。 1 模塊的寫法&#xff1a; 創建一個.py文件&#xff0c;該文件中包含函數與變量。使用撰寫python解釋器本身的本地語言來編寫模塊。比如使用C代碼編寫python模塊&#xff0c;并且在編譯后&#xff0c;可以通過標準的python解釋…

jeecg選擇按鈕帶入其他單據值

前端的標簽 <input class"inputxt" id"fshimian" name"fshimian" ignore"ignore" datatype"*" value"${shizhePage.fshimian}" /> <t:choose hiddenName"fshimian" hiddenid"fname"…

alsa編程

alsa 編程 分類&#xff1a; linux 2012-08-18 20:13 124人閱讀 評論(0) 收藏 舉報 編程parametersbufferloopsaccessplayback轉載自&#xff1a;http://blog.csdn.net/spygg/article/details/7824750 ALSA(Advanced Linux Sound Architecture)是由內核驅動,標準的API庫和一系…

Fiddler4入門——手機抓包

一、下載工具包 百度搜索”fiddler 下載“ &#xff0c;安裝最新版本 下載的軟件安裝包為“fiddler_4.6.20171.26113_setup.exe”格式&#xff0c;雙擊安裝。安裝成功&#xff0c;在“開始”-“所有程序”&#xff0c;就會看見這樣的圖標&#xff0c;若是常用的話&#xff0c;也…