JAVA的AES加密解密在windows上测试正常,但Linux服务器上却有异常!

1、查看日志打印如下异常:javax.crypto.BadPaddingException: Given final block not properly padded

       原因:是在生成key的时候就出现错误了


2、修改步骤如下:

原来代码:

KeyGenerator generator = KeyGenerator.getInstance("DES");
			generator.init(new SecureRandom(KEY_STR.getBytes()));
			key = generator.generateKey();
			generator = null;


修改后代码:

KeyGenerator generator = KeyGenerator.getInstance("DES");
			//这样实例化SecureRandom对象才可以
			SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
	       		random.setSeed(KEY_STR.getBytes());
	        	generator.init(random);
			key = generator.generateKey();
			generator = null;
把红色的代码修改后就可以了!就是SecureRandom创建的方式不同而引起的错误,具体的情况还不清楚。

我是从这里找到解决方案的:http://wenku.baidu.com/link?url=wOibKHENi2Z5gFOL5prjGBE8RES1dZEZlrvfY1NTl89QJWtTwXUNLmgEXVYWGBGXR25oRvOKPJTI5M3o95KW0yIHwgFVEnJiZt1-0YvRQua



你可能感兴趣的:(java)