當前位置:首頁 » 密碼管理 » aes加密jar

aes加密jar

發布時間: 2023-09-08 01:09:08

java AES加密

使用AES加密時,當密鑰大於128時,代碼會拋出java.security.InvalidKeyException: Illegal key size or default parameters

Illegal key size or default parameters是指密鑰長度是受限制的,java運行時環境讀到的是受限的policy文件。文件位於${java_home}/jre/lib/security

這種限制是因為美國對軟體出口的控制。

解決辦法:
去掉這種限制需要下載Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files.網址如下。

下載包的readme.txt 有安裝說明。就是替換${java_home}/jre/lib/security/ 下面的local_policy.jar和US_export_policy.jar
jdk 5: http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#jce_policy-1.5.0-oth-JPR

㈡ springboot上傳文件到伺服器aes加密

業務需求:資料庫中的用戶名密碼明文存儲在配置文件中,不是十分安全。所以將資料庫中的用戶名密碼使用AES對稱加密放入配置文件中,達到加密效果。同時也不想使用tomcat等中間件等太繁重,就使用了spring boot 輕量級框架。個人比較菜,輕噴。
關於如何搭建spring boot項目其他的人說的很詳細 參考初識Spring Boot框架

入口類代碼

@Controller
@SpringBootApplication
@EnableAutoConfiguration
{
publicstaticvoidmain(String[]args){
SpringApplication.run(Aesdemo1Application.class,args);
}
}

運行時只要運行main方法 或者打包後java -jar 即可(寫成.bat文件 點擊運行方便簡單)

@Controller
publicclassGetKeyController{
@GetMapping("/getkey")
publicStringgreetingForm(Modelmodel){
model.addAttribute("passwordBean",newPasswordBean());return"index";
}
@PostMapping("/getkey")
publicStringgreetingSubmit(@){
Strings1=AESUtil.encrypt(passwordBean.getPassword(),passwordBean.getVar1());
passwordBean.setVar2(s1);
return"result";
}
}

啟動後有這里還有一個控制器類
瀏覽器地址輸入 http://localhost:8080/getkey 即可跳轉到greetingForm 方法,賦入PasswordBean屬性後 跳轉到index.html
PasswordBean 是自己定義的bean類 裡面有password var1 var2 3個屬性

index.html代碼

<!DOCTYPEhtml>
<htmllang="en"xmlns:th="http://www.thymeleaf.org">
<head>
<metacharset="UTF-8"/>
<title>Title</title>
</head>

<body>
<formaction="#"th:action="@{/getkey}"th:object="${passwordBean}"method="post">
<p>密碼:<inputtype="text"th:field="*{password}"/></p>
<p>加密字元:<inputtype="text"th:field="*{var1}"/></p>
<p><inputtype="submit"value="Submit"/>
<inputtype="reset"value="Reset"/></p>
</form>
</body>
</html>

注意使用了thymeleaf框架 所以必須引入

輸入要加密的和鹽即可獲得通過post方法到result即可獲得加密後字元串

<!DOCTYPEhtml>
<htmllang="en"xmlns:th="http://www.thymeleaf.org">
<head>
<metacharset="UTF-8"/>
<title>Title</title>
</head>
<body>
<h1>Result</h1>
<pth:text="'密碼:'+${passwordBean.password}"/>
<pth:text="'加密字元:'+${passwordBean.var1}"/>
<pth:text="'加密後字元:'+${passwordBean.var2}"/>
<ahref="/getkey">Submitanothermessage</a>
</body>
</html>

㈢ [簡述AES高級加密標准]簡述加密和解密技術的工作機制

1 引言 隨著網際網路的發展,信息傳輸及存儲的安全問題成為影響網際網路應用發展的重要因素。信息安全技術也就成為了人們研究網際網路應用的新熱點。 信息安全的研究包括密碼理論與技術、安全協議睜檔野與技術、安全體系結構理論、信息對抗理論與技術、網路安全與安全產品等領域,其中密碼演算法的理論與實現研究是信息安全研究的基礎。

2 AES加密標准
1977年1月公布的數據加密標准DES(Data Encrption Standard)經過20年的實踐應用後,現在已被認為是不可靠的。1997年1月美國國家標准和技術研究所(NIST)發布了高級加密標准(AES- FIPS)的研發計劃,並於同年9月正式發布了徵集候選演算法公告[1],NIST希望確定一種保護敏感信息的公開、免費並且全球通用的演算法作為AES,以代替DES。NIST對演算法的基本要求是:演算法必須是私鑰體制的分組密碼,支持128位分組長度和129、192、256bits密鑰長度。

3 AES的研究現狀
從1997年NIST發布了高級加密標准AES的研發計劃到現在,對AES的研究大致可以分成三個階段。第一階段是從1997到2000年,研究的主要方向是提出候選演算法並對各候選演算法的性能進行分析。在此期間共提出了十五個候選演算法,最終Rijndael演算法勝出並用於AES中。Rijndael演算法是一種蠢塌可變分組長度和密鑰長度的迭代型分組密碼,它的分組長度和密鑰長度均可獨立地指定為128bits、192bits、256bits,它以其多方面的優良性能,成為AES的最佳選擇。Rijndael演算法能抵抗現在的所有己知密碼攻擊,它的密鑰建立時間極短且靈活性強,它極低的內存要求使其非常適合在存儲器受限的環境中使用,悉喊並且表現出很好的性能。第二階段是從2000年Rijndael演算法勝出後到2001年NIST發布FIPS PUBS 197文件前。在此階段對AES的研究轉到了對Rijndael演算法的研究和分析、設計AES的工作模式上。第三階段是從FIPS PUBS 197發布到現在。在此階段,研究的方向可以分成兩個主要方向:一個是繼續研究Rijndael演算法本身的性能,特別是其安全性分析;另一個就是AES的實現和應用的研究。
演算法設計主要研究演算法設計遵循的原則和整體結構,為性能分析提供了一條途徑。從演算法的結構上分析演算法性能是簡單有效的,研究演算法整體結構上的缺陷為提出新的密碼分析方法提供新的手段。另一方面,研究AES的演算法設計對研發新的分組密碼提供了設計原則和參考。目前分組數據加密演算法的整體結構有兩大類:Feistel網路、非平衡Feistel網路和SP網路。
性能分析主要研究演算法的各項特性,性能分析主要可以分為實現分析和密碼分析兩類。實現分析主要研究AES演算法可實現的能力。當前實現性分析主要集中在AES的硬、軟體實現的難易度和實現演算法的效率等領域中。密碼分析則是在理論上對現有加密演算法進行研究的主要方向。密碼分析主要研究AES演算法抵抗現有己知密碼攻擊的能力,即演算法的安全性分析。當前主要攻擊手段有:強力攻擊、差分密碼分析[2][3]、 線性密碼分析[4]、Square攻擊和插值攻擊等。
但是隨著密碼分析技術的不斷發展,積分分析、功耗分析和代數攻擊等新的密碼分析手段陸續出現。它們己成為密碼分析新的研究方向[5]。

4 AES的實現
對於AES實現的研究主要集中在軟體實現和硬體實現兩個領域中。AES標准所選擇的Rijndael演算法遵循了分組密碼設計的實現性原則,十分方便在軟、硬體上實現。從AES實現的角度上看,當前研究的主要方向在各個演算法步驟的優化實現。演算法步驟針對不同的實現環境進行優化後,在應用中能獲取更好的實際數據加密效果。其主要的研究成果集中在S-盒的生成演算法優化、輪變換過程優化和密鑰擴展優化三個方面。下面就軟體實現和硬體實現在這三個方面的研究現狀做一個簡單介紹:
(1) 在微機上通過軟體實現。這是利用AES演算法保障計算機信息安全,特別是網路中信息傳輸與存儲安全的主要途徑。在軟體實現中,輪變換過程優化則是軟體實現演算法優化的主要研究方向。密鑰擴展優化也是研究的重點之一。AES所提供的密鑰擴展方案保證了密鑰擴展過程中的雪崩效應,也保證了密鑰擴展方案的易實現性。此外,將其他的理論研究應用到分組數據加密演算法中,也是實現研究的一個重要方向。
(2) 通過硬體晶元實現。AES演算法對於存儲空間的要求較小,演算法過程相對比較簡單,特別是經過有針對性的實現演算法優化和精簡後很易於利用硬體電路實現,因此現在許多相關的商業產品都是基於密碼晶元的。

5 AES研究意義
目前,DES加密標准正在逐漸淡出加密標準的舞台,新加密標准AES正在獲得越來越多的重視及應用。面對未來的發展,對AES產品的需求是非常巨大的。因此,對AES實現的探討和研究具有很大的理論意義和實踐意義。

――――――――――
參考文獻
[1]褚振勇,翁木雲.FPGA設計及應用.西安電子科技大學出版社,2002,7.
[2]李玉山,來新泉.電子系統集成設計技術.電子工業出版社,2002,10.
[3]牛風舉,劉元成,朱明程.基於IP復用的數字IC設計技術,2003,9.
[4]Joan Daemon, Vincent Rijmen.高級加密標准(AES)演算法:Rijndael的設計.谷大武,徐勝波,譯.清華大學出版社,2003,3.
[5]Bruce Schneie.應用密碼學:協議、演算法與C源程序.昊世忠,祝世雄,張文政,等,譯.機械工業出版社,2000,1.

作者簡介:李佳(1976-),女,河北唐山人,講師,北京科技大學工程碩士,主要研究網路數據安全。

㈣ AES加密演算法原理

一般的加密通常都是塊加密,如果要加密超過塊大小的數據,就需要涉及填充和鏈加密模式,本文對對稱加密和分組加密中的幾種種模式進行一一分析(ECB、CBC、CFB、OFB,CTR)

這種模式是將整個明文分成若干段相同的小段,然後對每一小段進行加密。

優點:

這種模式是先將明文切分成若干小段,然後每一小段與初始塊或者上一段的密文段進行異或運算後,再與密鑰進行加密。

優點:

計算器模式不常見,在CTR模式中, 有一個自增的運算元,這個運算元用密鑰加密之後的輸出和明文異或的結果得到密文,相當於一次一密。這種加密方式簡單快速,安全可靠,而且可以並行加密,但是 在計算器不能維持很長的情況下,密鑰只能使用一次 。CTR的示意圖如下所示:

優點:

優點:

優點:

㈤ 簡述aes演算法的加密過程

AES加密過程涉及到 4 種操作,分別是位元組替代行移位列混淆輪密鑰加

1.位元組替換:位元組代替的主要功能是通過S盒完成一個位元組到另外一個位元組的映射。

2.行移位:行移位的功能是實現一個4x4矩陣內部位元組之間的置換。

4.輪密鑰加:加密過程中,每輪的輸入與輪密鑰異或一次(當前分組和擴展密鑰的一部分進行按位異或);因為二進制數連續異或一個數結果是不變的,所以在解密時再異或上該輪的密鑰即可恢復輸入。

5.密鑰擴展:其復雜性是確保演算法安全性的重要部分。當分組長度和密鑰長度都是128位時,AES的加密演算法共迭代10輪,需要10個子密鑰。AES的密鑰擴展的目的是將輸入的128位密鑰擴展成11個128位的子密鑰。AES的密鑰擴展演算法是以字為一個基本單位(一個字為4個位元組),剛好是密鑰矩陣的一列。因此4個字(128位)密鑰需要擴展成11個子密鑰,共44個字。

㈥ 加密演算法之AES

AES採用分組密碼體制,首先將明文分成以16個位元組長度為基準位元組段,如果最後不足16位元組則同樣使用填充。然後分組對每段位元組段進行加密得到密文,再將最後得到的密文拼接在一起形成最終的密文。AES演算法的密鑰長度可以分為128位,256位,512位。

整個加密過程如下圖所示:

功能實現,在客戶端中將明文進行AES加密後通過TCP鏈接發送至另一個客戶端,另一端通過密鑰對密文進行解密得到明文

㈦ java實現aes加密或者解密,不用工具包的怎麼做

importjava.security.InvalidKeyException;
importjava.security.Key;
importjava.security.NoSuchAlgorithmException;

importjavax.crypto.*;
importjavax.crypto.spec.*;

/**
*
*@authorwchun
*
*AES128演算法,加密模式為ECB,填充模式為pkcs7(實際就是pkcs5)
*
*
*/
publicclassAES{

staticfinalStringalgorithmStr="AES/ECB/PKCS5Padding";

;

staticprivateCiphercipher;

staticbooleanisInited=false;

//初始化
staticprivatevoidinit()
{

//初始化keyGen
try{
keyGen=KeyGenerator.getInstance("AES");
}catch(NoSuchAlgorithmExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
keyGen.init(128);

//初始化cipher
try{
cipher=Cipher.getInstance(algorithmStr);
}catch(NoSuchAlgorithmExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(NoSuchPaddingExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

isInited=true;
}

publicstaticbyte[]GenKey()
{
if(!isInited)//如果沒有初始化過,則初始化
{
init();
}
returnkeyGen.generateKey().getEncoded();
}

publicstaticbyte[]Encrypt(byte[]content,byte[]keyBytes)
{
byte[]encryptedText=null;

if(!isInited)//為初始化
{
init();
}

Keykey=newSecretKeySpec(keyBytes,"AES");

try{
cipher.init(Cipher.ENCRYPT_MODE,key);
}catch(InvalidKeyExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

try{
encryptedText=cipher.doFinal(content);
}catch(IllegalBlockSizeExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(BadPaddingExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

returnencryptedText;
}

//解密為byte[]
publicstaticbyte[]DecryptToBytes(byte[]content,byte[]keyBytes)
{
byte[]originBytes=null;
if(!isInited)
{
init();
}

Keykey=newSecretKeySpec(keyBytes,"AES");

try{
cipher.init(Cipher.DECRYPT_MODE,key);
}catch(InvalidKeyExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

//解密
try{
originBytes=cipher.doFinal(content);
}catch(IllegalBlockSizeExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(BadPaddingExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

returnoriginBytes;
}
}

㈧ Java實現AES256位對稱加密演算法要替換什麼包才能實現

需要下載對應版本的Java Cryptography Extension (JCE),替換JDK安裝目錄\jre\lib\security下的local_policy.jar和US_export_policy.jar,如果獨立JRE的話也是覆蓋相同路徑的文件。
JDK8對應的JCE在 http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
可以參考我的文章 http://boytnt.blog.51cto.com/966121/1860309

熱點內容
全本免費閱讀器在哪緩存 發布:2025-01-23 11:14:54 瀏覽:438
傳輸數據加密 發布:2025-01-23 11:03:20 瀏覽:254
win7文件夾沒有共享 發布:2025-01-23 10:55:43 瀏覽:140
php原鏈接 發布:2025-01-23 10:49:56 瀏覽:513
演講稿腳本需要哪些要素 發布:2025-01-23 10:49:55 瀏覽:383
傳奇日常腳本 發布:2025-01-23 10:45:04 瀏覽:40
刷華為的系統可以用方舟編譯器嗎 發布:2025-01-23 10:45:03 瀏覽:226
java數組反射 發布:2025-01-23 10:39:24 瀏覽:291
伺服器如何從導軌取下來 發布:2025-01-23 10:28:30 瀏覽:103
華為手機的密碼保險櫃在哪裡 發布:2025-01-23 10:27:02 瀏覽:634