Java程序实现AES(高级加密标准)算法
1585 人阅读 | 时间:2018年12月04日 16:30
import java.io.BufferedReader; import java.io.InputStreamReader; import java.security.spec。AlgorithmParameterSpec的; import javax.crypto.Cipher; import javax.crypto.spec。IvParameterSpec; import javax.crypto.spec。SecretKeySpec; 公共类 AES { BufferedReader阅读器; 最终字符串IV = “AAAAAAAAAAAAAAAA” ; public static void main(String args []){ AES aes = new AES(); aes.go(); } public AES(){ reader = new BufferedReader (new InputStreamReader(System .in)); } void go(){ StringBuffer message = new StringBuffer(); 尝试 { System .out.print(“ 输入消息:”); message.append(reader。readLine()); while(message.length()%16!= 0) message.append(' \ u 0000 '); } catch(Exception e){ e.printStackTrace(); 回归 ; } StringBuffer key = new StringBuffer(); 尝试 { System .out.print(“输入密钥:”); key.append(reader.readLine()); while(key.length()%16!= 0) key.append(' \ u 0000'); } catch(Exception e){ e.printStackTrace(); 回归 ; } //加密 字节 [] cipher = encrypt(message.toString(),key.toString()); System .out.print(“Cipher:”); for(int i = 0 ; i <cipher.length; i ++) System .out.print((int)cipher [ i]); 的System.out.println(); //密钥 //key.replace(0,6,“ABCDEF”)无效; //解密 字符串 decrypted = decrypt(cipher,key.toString()); System .out.println(“Decrypted message:” + decrypted ); } byte [] encrypt (String plain,String key){ byte [] encrypted = null ; 尝试 { Cipher cipher = Cipher.getInstance (“AES / CBC / NoPadding”,“SunJCE”); SecretKeySpec sks = new SecretKeySpec(key.getBytes(“ UTF-8”),“AES”); AlgorithmParameterSpec参数; params = new IvParameterSpec(IV.getBytes(“ UTF-8”)); cipher.init(Cipher.ENCRYPT_ MODE,sks,params); encrypted = cipher.doFinal(plain.getBytes(“UTF-8”)); } catch(Exception e){ e.printStackTrace(); } return encrypted; } String decrypt(byte [] ct,String key){ StringBuffer decrypted = new StringBuffer(); 尝试 { Cipher cipher = Cipher.getInstance(“AES / CBC / NoPadding”,“SunJCE”); SecretKeySpec sks = new SecretKeySpec(key.getBytes(“ UTF-8”),“AES”); AlgorithmParameterSpec 参数 ; params = new IvParameterSpec(IV.getBytes(“UTF-8“)); cipher.init(Cipher.DECRYPT_ MODE,sks,params); String s = new String(cipher.doFinal(ct),”UTF-8“); decrypted.append (s); } catch (例外 e){ e.printStackTrace(); } for(int i = decrypted.length() - 1 ; i> 0; i -- ){ if(decrypted.charAt(i)== ' \ u 0000') decrypted.deleteCharAt(i); else break ; } return decrypted.toString(); } } *** FE,输出: 输入消息:“Obeanie上了Tora Bora并最终进入了Abotttabad,Yankee Doodle Doo和Big Brother花了10年时间才发现它。目的的单一性是必要的,并且使用NSA的Prism是值得怀疑的。” 输入密钥:JackRabbitMoab308 密码:3224-48-107-24-1126134-1234771101-48-82114-87-84-3512-19-117507-103427011567-3698-698248-548625587-25-56-65-69-546-5875- 77563219 解密的消息:Obeanie上了Tora Bora并最终进入了Abotttabad,Yankee Doodle Doo和Big Brother花了10年的时间才算清楚这一点。目的的单一性是必要的,NSA的棱镜的使用是值得怀疑的。
©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任
来源:ZhiKuGroup博客,欢迎分享。
评论专区
很多天不上线,一上线就看到这么给力的帖子!http://3bi.net/post/123.html/