JS 和 JAVA 實現 aes(AES/CBC/PKCS5Padding) 加密__JAVA

來源:互聯網
上載者:User
AES 簡介

密碼學中的進階加密標準(Advanced Encryption Standard,AES),又稱進階加密標準Rijndael加密法,
是美國聯邦政府採用的一種區塊加密標準。這個標準用來替代原先的DES,已經被多方分析且廣為全世界
所使用。經過五年的甄選流程,進階加密標準由美國國家標準與技術研究院 (NIST)於2001年11月26日
發佈於FIPS PUB197,並在2002年5月26日成為有效標準。2006年,進階加密標準已然成為對稱金鑰密碼編譯
中最流行的演算法之一。該演算法為比利時密碼學家Joan Daemen和VincentRijmen所設計,結合兩位作者的名
字,以Rijndael之命名之,投稿進階加密標準的甄選流程。(Rijdael的發音近於 “Rhinedoll”。) AES加密模式和填充方式(其實還有還幾種填充方式沒寫上,開始時候也在這裡繞了一下)

演算法/模式/填充 —————-16位元組加密後資料長度 ——不滿16位元組加密後長度
AES/CBC/NoPadding ——-16 ——————————-不支援
AES/CBC/PKCS5Padding ——-32 ——————————-16
AES/CBC/ISO10126Padding ——-32 ——————————-16
AES/CFB/NoPadding ——-16 ——————————-未經處理資料長度
AES/CFB/PKCS5Padding ——- 32 ——————————-16
AES/CFB/ISO10126Padding ——-32 ——————————-16
AES/ECB/NoPadding ——-16 ——————————-不支援
AES/ECB/PKCS5Padding ——-32 ——————————-16
AES/ECB/ISO10126Padding ——-32 ——————————- 16
AES/OFB/NoPadding ——-16 ——————————-未經處理資料長度
AES/OFB/PKCS5Padding ——- 32 ——————————-16
AES/OFB/ISO10126Padding ——- 32 ——————————-16
AES/PCBC/NoPadding ——-16 ——————————-不支援
AES/PCBC/PKCS5Padding ——-32 ——————————- 16
AES/PCBC/ISO10126Padding ——-32 ——————————-16

更多關於加密模式內容:http://blog.sina.com.cn/s/blog_679daa6b0100zmpp.html Javascript端代碼:

<script src="aes.js"></script><script src="pad-zeropadding.js"></script><script>var data = "Test String";var key  = CryptoJS.enc.Latin1.parse('1234567812345678');var iv   = CryptoJS.enc.Latin1.parse('1234567812345678');//加密var encrypted = CryptoJS.AES.encrypt(data,key,{iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.ZeroPadding});document.write(encrypted.ciphertext);document.write('<br/>');document.write(encrypted.key);document.write('<br/>');document.write(encrypted.iv);document.write('<br/>');document.write(encrypted.salt);document.write('<br/>');document.write(encrypted);document.write('<br/>');//解密var decrypted = CryptoJS.AES.decrypt(encrypted,key,{iv:iv,padding:CryptoJS.pad.ZeroPadding});console.log(decrypted.toString(CryptoJS.enc.Utf8));</script>

第二種:

//AES-128-CBC加密模式,key需要為16位,key和iv可以一樣    function encrypt(data) {        var key  = CryptoJS.enc.Latin1.parse('dufy20170329java');        var iv   = CryptoJS.enc.Latin1.parse('dufy20170329java');        return CryptoJS.AES.encrypt(data, key, {iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.ZeroPadding}).toString();    }
Vue中 使用 CryptoJS 完成加密
// 引入aes加密import CryptoJS from 'crypto-js'Vue.prototype.$crypto = CryptoJS;// Encrypt  CryptoJS.pad.Pkcs7var key  = this.$crypto.enc.Utf8.parse('xxxxx');  // 與後台統一var iv   = this.$crypto.enc.Utf8.parse('16-Bytes--String'); // 與後台統一var ciphertext = this.$crypto.AES.encrypt(data, key,{    iv:iv,    mode:this.$crypto.mode.CBC, // 根據上面得對應模式修改    padding:this.$crypto.pad.Pkcs7 // 根據上面對應模式修改}).toString();

aes,CryptoJS 下載

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.