用AES加解密,加密可以,解密却有错(错误描述如文章最后所示),不知如何解决?

问题描述

importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.security.InvalidKeyException;importjava.security.Key;importjava.security.NoSuchAlgorithmException;importjava.util.Iterator;importjava.util.Properties;importjavax.crypto.BadPaddingException;importjavax.crypto.Cipher;importjavax.crypto.IllegalBlockSizeException;importjavax.crypto.NoSuchPaddingException;importjavax.crypto.spec.SecretKeySpec;importorg.apache.commons.codec.binary.Hex;/***AES加密工具*@authorBany*@version创建时间:**/publicclassSecUtil{privatestaticfinalbyte[]keybytes={0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38};publicstaticvoidmain(String[]args)throwsException{encrypt("db.properties");decrypt("db.properties");}/***加密*@paramvalue*@return*@throwsIOException*@throwsNoSuchPaddingException*@throwsNoSuchAlgorithmException*@throwsInvalidKeyException*@throwsBadPaddingException*@throwsIllegalBlockSizeException*/publicstaticvoidencrypt(Stringfilepath)throwsIOException,InvalidKeyException,NoSuchAlgorithmException,NoSuchPaddingException,IllegalBlockSizeException,BadPaddingException{InputStreaminput=SecUtil.class.getClassLoader().getResourceAsStream(filepath);Propertiesproperties=newProperties();properties.load(input);Iterator<Object>it=properties.keySet().iterator();FileOutputStreamout=newFileOutputStream(filepath);while(it.hasNext()){Stringkey=String.valueOf(it.next());byte[]value=properties.getProperty(key).getBytes();intmode=Cipher.ENCRYPT_MODE;Ciphercipher=initCipher(mode);Stringdatas=String.valueOf(Hex.encodeHex(cipher.doFinal(value)));System.out.println(key+"="+datas+'r'+'n');out.write((key+"="+datas+'r'+'n').getBytes());}}/***解密*@paramvalue*@return*@throwsException*@throwsBadPaddingException*@throwsIllegalBlockSizeException***/publicstaticvoiddecrypt(Stringfilepath)throwsIllegalBlockSizeException,BadPaddingException,Exception{InputStreaminput=SecUtil.class.getClassLoader().getResourceAsStream(filepath);Propertiesproperties=newProperties();properties.load(input);Iterator<Object>it=properties.keySet().iterator();FileOutputStreamout=newFileOutputStream(filepath);while(it.hasNext()){Stringkey=String.valueOf(it.next());byte[]value=properties.getProperty(key).getBytes();System.out.println(value);intmode=Cipher.DECRYPT_MODE;Ciphercipher=initCipher(mode);char[]datas=String.valueOf(Hex.encodeHex(cipher.doFinal(value))).toCharArray();//char[]a=cipher.doFinal(value).toString().toCharArray();Stringdatass=newString(cipher.doFinal(Hex.decodeHex(datas)));System.out.println(key+"="+datass+'r'+'n');out.write((key+"="+datass+'r'+'n').getBytes());}}/***加密解密的算法(指定私钥解密的数据)**/privatestaticCipherinitCipher(intmode)throwsNoSuchAlgorithmException,NoSuchPaddingException,InvalidKeyException{Ciphercipher=Cipher.getInstance("AES/ECB/PKCS5Padding");Keykey=newSecretKeySpec(keybytes,"AES");cipher.init(mode,key);returncipher;}}**********************************错误信息*****************************Exceptioninthread"main"java.security.InvalidParameterException:Invalidoperationmodeatjavax.crypto.Cipher.a(DashoA13*..)atjavax.crypto.Cipher.init(DashoA13*..)atjavax.crypto.Cipher.init(DashoA13*..)atconfig.SecUtil.initCipher(SecUtil.java:106)atconfig.SecUtil.decrypt(SecUtil.java:90)atconfig.SecUtil.main(SecUtil.java:35)

时间: 2024-10-15 02:07:35

用AES加解密,加密可以,解密却有错(错误描述如文章最后所示),不知如何解决?的相关文章

对称加密之AES及压缩加密解密解压综合实战

 对称加密:就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密.密钥是控制加密及解密过程的指令.算法是一组规则,规定如何进行加密和解密. 因此加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要.因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题. 由此可见密钥传递也是比较重要的一环,一般都是通过对密钥二次加密的方式,进行密钥的传输 加密实现代码: public static byte[] encryptStringToBytes_AES(b

懂java和php来,aes加解密将java版转为php版

问题描述 懂java和php来,aes加解密将java版转为php版 /** * AES加密 * * @param key * 密钥信息 * @param content * 待加密信息 */ public static byte[] encodeAES(byte[] key, byte[] content) throws Exception { // 不是16的倍数的,补足 int base = 16; if (key.length % base != 0) { int groups = ke

android中AES加解密的使用方法_Android

今天在android项目中使用AES对数据进行加解密,遇到了很多问题,网上也找了很多资料,也不行.不过最后还是让我给搞出来了,这里把这个记录下来,不要让别人走我的弯路,因为网上绝大多数的例子都是行不通的.好了,接下来开始讲解 1.Aes工具类 package com.example.cheng.aesencrypt; import android.text.TextUtils; import java.security.NoSuchAlgorithmException; import java.

AES加解密在php接口请求过程中的应用示例_php实例

在php请求接口的时候,我们经常需要考虑的一个问题就是数据的安全性,因为数据传输过程中很有可能会被用fillder这样的抓包工具进行截获.一种比较好的解决方案就是在客户端请求发起之前先对要请求的数据进行加密,服务端api接收到请求数据后再对数据进行解密处理,返回结果给客户端的时候也对要返回的数据进行加密,客户端接收到返回数据的时候再解密.因此整个api请求过程中数据的安全性有了一定程度的提高. 今天结合一个简单的demo给大家分享一下AES加解密技术在php接口请求中的应用. 首先,准备一个AE

android中AES加解密的使用方法

今天在android项目中使用AES对数据进行加解密,遇到了很多问题,网上也找了很多资料,也不行.不过最后还是让我给搞出来了,这里把这个记录下来,不要让别人走我的弯路,因为网上绝大多数的例子都是行不通的.好了,接下来开始讲解 1.Aes工具类 package com.example.cheng.aesencrypt; import android.text.TextUtils; import java.security.NoSuchAlgorithmException; import java.

AES加解密在php接口请求过程中的应用示例

在php请求接口的时候,我们经常需要考虑的一个问题就是数据的安全性,因为数据传输过程中很有可能会被用fillder这样的抓包工具进行截获.一种比较好的解决方案就是在客户端请求发起之前先对要请求的数据进行加密,服务端api接收到请求数据后再对数据进行解密处理,返回结果给客户端的时候也对要返回的数据进行加密,客户端接收到返回数据的时候再解密.因此整个api请求过程中数据的安全性有了一定程度的提高. 今天结合一个简单的demo给大家分享一下AES加解密技术在php接口请求中的应用. 首先,准备一个AE

PHP下简单的AES加解密算法使用及例子(256位)

  <?php class aes {       // CRYPTO_CIPHER_BLOCK_SIZE 32   private $_secret_key = 'default_secret_key';   public function setKey($key) { $this->_secret_key = $key; }   public function encode($data) { $td = mcrypt_module_open(MCRYPT_RIJNDAEL_256,'',M

JAVA实现AES的加密和解密算法

原文 JAVA实现AES的加密和解密算法 import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; /** * AES 是一种可逆加密算法,对用户的敏感信息加密处理 * 对原始数据进行AES加密后,在进行Base6

Php AES加密、解密与Java互操作的问题

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为"中国PE第一股",市值超1000亿元.  -------------------------------------------------------------------------