A. AES 能加密多長的數據
AES設計的就是加密128bit的,不過好像也有最多到256bit的。
1024你打算怎麼做?有加密演算法的,1024比特也只能拆成8份分別加密
B. AES加密演算法支持密鑰key為多少位的
嚴格地說,AES和Rijndael加密法並不完全一樣(雖然在實際應用中二者可以互換),因為Rijndael加密法可以支持更大范圍的區塊和密鑰長度:
AES的區塊長度固定為128位,密鑰長度則可以是128,192或256位;而Rijndael使用的密鑰和區塊長度可以是32位的整數倍,以128位為下限,256位為上限。加密過程中使用的密鑰是由Rijndael密鑰生成方案產生。
(2)aes加密長度擴展閱讀
AES加密模式
對稱/分組密碼一般分為流加密(如OFB、CFB等)和塊加密(如ECB、CBC等)。對於流加密,需要將分組密碼轉化為流模式工作。對於塊加密(或稱分組加密),如果要加密超過塊大小的數據,就需要涉及填充和鏈加密模式。
優點:1、簡單;
2、有利於並行計算;
3、誤差不會被傳送;
缺點:
1、不能隱藏明文的模式;
2、可能對明文進行主動攻擊;
3、因此,此模式適於加密小消息。
C. 分組密碼DES、IDEA和AES的分組長度分別是多少各支持的密鑰長度為多少
DES 64 56
AES128 10
IDEA64 128
D. 我有一個AES128加密演算法,16位元組明文+16位元組密鑰輸入,16位元組密文輸出,如果1K的數據加密後輸出多大
既然有演算法,自己試一下不就知道了?16位元組就是128位,AES是按128位分組加密,你說應該輸出是多少呢?呵呵
E. 請問AES加密 強度高不
密碼學中的高級加密標准(Advanced Encryption Standard,AES),演算法是美國聯邦標准局於1997年開始向全世界徵集的加密標准,屬於對稱加密演算法,代表了當今最先進的編碼技術。最終獲勝的是RijnDael演算法,其它符合標準的候選演算法還有CAST256,MARS,RC6,Serpent,Twofish等。
完善的加密演算法在理論上是無法破解的,除非使用窮盡法。使用窮盡法破解密鑰長度在128位以上的加密數據是不現實的,僅存在理論上的可能性。統計顯示,即使使用目前世界上運算速度最快的計算機,窮盡128位密鑰也要花上幾十億年的時間,更不用說去破解採用256位密鑰長度的AES演算法了。
F. AES演算法到底可以加密多長的數據
這里你存在一個誤區。秘鑰可以是128位,但是密文是128的倍數,不一定就是128啊
G. AES加密演算法256位密鑰與128位密鑰的不同是什麼
一、指代不同
1、256位密鑰:AES的區塊長度固定為256位,密鑰長度則可以是256。
2、128位密鑰:AES的區塊長度固定為128位,密鑰長度則可以是128。
二、安全性不同
1、256位密鑰:256位密鑰安全性高於128位密鑰。
2、128位密鑰:128位密鑰安全性低於256位密鑰。
(7)aes加密長度擴展閱讀
AES和Rijndael加密法並不完全一樣(雖然在實際應用中二者可以互換),因為Rijndael加密法可以支持更大范圍的區塊和密鑰長度。
AES的區塊長度固定為128位,密鑰長度則可以是128,192或256位;而Rijndael使用的密鑰和區塊長度可以是32位的整數倍,以128位為下限,256位為上限。加密過程中使用的密鑰是由Rijndael密鑰生成方案產生。
對稱/分組密碼一般分為流加密(如OFB、CFB等)和塊加密(如ECB、CBC等)。對於流加密,需要將分組密碼轉化為流模式工作。對於塊加密(或稱分組加密),如果要加密超過塊大小的數據,就需要涉及填充和鏈加密模式。
ECB模式是最早採用和最簡單的模式,將加密的數據分成若干組,每組的大小跟加密密鑰長度相同,然後每組都用相同的密鑰進行加密。
H. java的aes加密成多少位數
深圳遠標幫你:
1.默認 Java 中僅支持 128 位密鑰,當使用 256 位密鑰的時候,會報告密鑰長度錯誤
Invalid AES key length
你需要下載一個支持更長密鑰的包。這個包叫做 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 6
看一下你的 JRE 環境,將 JRE 環境中 lib\lib\security 中的同名包替換掉。
2. Base64 問題
// 編碼
String asB64 = new Base64().encodeToString("some string".getBytes("utf-8"));
System.out.println(asB64); // 輸出為: c29tZSBzdHJpbmc=
解碼
// 解碼
byte[] asBytes = new Base64().getDecoder().decode("c29tZSBzdHJpbmc=");
System.out.println(new String(asBytes, "utf-8")); // 輸出為: some string
如果你已經使用 Java 8,那麼就不需要再選用第三方的實現了,在 java.util 包中已經包含了 Base64 的處理。
編碼的方式
// 編碼
String asB64 = Base64.getEncoder().encodeToString("some string".getBytes("utf-8"));
System.out.println(asB64); // 輸出為: c29tZSBzdHJpbmc=
解碼處理
// 解碼
byte[] asBytes = Base64.getDecoder().decode("c29tZSBzdHJpbmc=");
System.out.println(new String(asBytes, "utf-8")); // 輸出為: some string
3. 關於 PKCS5 和 PKCS7 填充問題
PKCS #7 填充字元串由一個位元組序列組成,每個位元組填充該填充位元組序列的長度。
假定塊長度為 8,數據長度為 9,
數據: FF FF FF FF FF FF FF FF FF
PKCS7 填充: FF FF FF FF FF FF FF FF FF 07 07 07 07 07 07 07
簡單地說, PKCS5, PKCS7和SSL3, 以及CMS(Cryptographic Message Syntax)
有如下相同的特點:
1)填充的位元組都是一個相同的位元組
2)該位元組的值,就是要填充的位元組的個數
如果要填充8個位元組,那麼填充的位元組的值就是0×8;
要填充7個位元組,那麼填入的值就是0×7;
…
如果只填充1個位元組,那麼填入的值就是0×1;
這種填充方法也叫PKCS5, 恰好8個位元組時還要補8個位元組的0×08
正是這種即使恰好是8個位元組也需要再補充位元組的規定,可以讓解密的數據很確定無誤的移除多餘的位元組。
比如, Java中
Cipher.getInstance(「AES/CBC/PKCS5Padding」)
這個加密模式
跟C#中的
RijndaelManaged cipher = new RijndaelManaged();
cipher.KeySize = 128;
cipher.BlockSize = 128;
cipher.Mode = CipherMode.CBC;
cipher.Padding = PaddingMode.PKCS7;
的加密模式是一樣的
因為AES並沒有64位的塊, 如果採用PKCS5, 那麼實質上就是採用PKCS7
I. AES演算法加密128位明文加密後是16位元組的塊,那超過16位元組明文加密後密文塊是多大
明文密文是一比一的,超過16位元組的可分段加密
J. aes如何加密任意長度字元串
aes-ctr模式就可以,不用對齊