Java AES256加密解密示例代码
Java支持许多安全的加密算法,但是其中一些功能较弱,无法在安全性要求很高的应用程序中使用。例如,数据加密标准(DES)加密算法被认为是高度不安全的。今天介绍一下AES256加密解密。
什么是 AES256?
- 高级加密标准(英语:AdvancedEncryptionStandard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。
- AES是一种对称加密算法。它旨在易于在硬件和软件以及受限环境中实施,并提供针对各种攻击技术的良好防御。AES是能够使用大小为128、192和256位的密钥处理128位块的块密码。每个密码分别使用128位,192位和256位的加密密钥对128位块中的数据进行加密和解密。它使用相同的密钥进行加密和解密,因此发送方和接收方都必须知道并使用相同的秘密密钥。
在下面的加密和解密示例中,我在UTF-8字符集中使用了base64编码。用于显示程序的输出。也可以以字节数组格式存储和验证数据。
AES256加密
Java程序中,用于使用AES256位对密码(或任何信息)进行加密。
privatestaticStringsecretKey="boooooooooom!!!!"; privatestaticStringsalt="ssshhhhhhhhhhh!!!!"; publicstaticStringencrypt(StringstrToEncrypt,Stringsecret) { try { byte[]iv={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; IvParameterSpecivspec=newIvParameterSpec(iv); SecretKeyFactoryfactory=SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); KeySpecspec=newPBEKeySpec(secretKey.toCharArray(),salt.getBytes(),65536,256); SecretKeytmp=factory.generateSecret(spec); SecretKeySpecsecretKey=newSecretKeySpec(tmp.getEncoded(),"AES"); Ciphercipher=Cipher.getInstance("AES/CBC/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE,secretKey,ivspec); returnBase64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes("UTF-8"))); } catch(Exceptione) { System.out.println("Errorwhileencrypting:"+e.toString()); } returnnull; }
AES256解密
Java程序,用于使用AES256位解密密码(或任何信息)。
privatestaticStringsecretKey="boooooooooom!!!!"; privatestaticStringsalt="ssshhhhhhhhhhh!!!!"; publicstaticStringdecrypt(StringstrToDecrypt,Stringsecret){ try { byte[]iv={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; IvParameterSpecivspec=newIvParameterSpec(iv); SecretKeyFactoryfactory=SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); KeySpecspec=newPBEKeySpec(secretKey.toCharArray(),salt.getBytes(),65536,256); SecretKeytmp=factory.generateSecret(spec); SecretKeySpecsecretKey=newSecretKeySpec(tmp.getEncoded(),"AES"); Ciphercipher=Cipher.getInstance("AES/CBC/PKCS5PADDING"); cipher.init(Cipher.DECRYPT_MODE,secretKey,ivspec); returnnewString(cipher.doFinal(Base64.getDecoder().decode(strToDecrypt))); } catch(Exceptione){ System.out.println("Errorwhiledecrypting:"+e.toString()); } returnnull; }
测试AES256加密和解密方法
用一个简单的字符串测试我们的AES256加密和解密方法
publicstaticvoidmain(String[]args) { StringoriginalString="www.csdn.net"; StringencryptedString=AES.encrypt(originalString,secretKey); StringdecryptedString=AES.decrypt(encryptedString,secretKey); System.out.println(originalString); System.out.println(encryptedString); System.out.println(decryptedString); }
输出结果
www.csdn.net
biXhp3Ha1fgxVEp48zHrvVoXMStmxPuAPHo3TVz5lHU=
www.csdn.net
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。