java input multiple_java对称加密报错:Input length must be multiple of 8 when decrypting with padded cipher...

HTTP Status 500 - Request processing failed; nested exception is javax.crypto.IllegalBlockSizeException: Input length must be multiple of 8 when decrypting with padded cipher

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is javax.crypto.IllegalBlockSizeException: Input length must be multiple of 8 when decrypting with padded cipher

org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894)

org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)

javax.servlet.http.HttpServlet.service(HttpServlet.java:621)

javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

Here is my Encryption and Decryption code

//secret key 8

private static String strkey ="Blowfish";

UPDATED

//encrypt using blowfish algorithm

public static byte[] encrypt(String Data)throws Exception{

SecretKeySpec key = new SecretKeySpec(strkey.getBytes("UTF8"), "Blowfish");

Cipher cipher = Cipher.getInstance("Blowfish");

cipher.init(Cipher.ENCRYPT_MODE, key);

return (cipher.doFinal(Data.getBytes("UTF8")));

}

//decrypt using blow fish algorithm

public static String decrypt(byte[] encryptedData)throws Exception{

SecretKeySpec key = new SecretKeySpec(strkey.getBytes("UTF8"), "Blowfish");

Cipher cipher = Cipher.getInstance("Blowfish");

cipher.init(Cipher.DECRYPT_MODE, key);

byte[] decrypted = cipher.doFinal(encryptedData);

return new String(decrypted);

}

import javax.crypto.Cipher;

import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Base64;

public class Test {

private static String strkey ="Blowfish";

private static Base64 base64 = new Base64(true);

//encrypt using blowfish algorithm

public static String encrypt(String Data)throws Exception{

SecretKeySpec key = new SecretKeySpec(strkey.getBytes("UTF8"), "Blowfish");

Cipher cipher = Cipher.getInstance("Blowfish");

cipher.init(Cipher.ENCRYPT_MODE, key);

return base64.encodeToString(cipher.doFinal(Data.getBytes("UTF8")));

}

//decrypt using blow fish algorithm

public static String decrypt(String encrypted)throws Exception{

byte[] encryptedData = base64.decodeBase64(encrypted);

SecretKeySpec key = new SecretKeySpec(strkey.getBytes("UTF8"), "Blowfish");

Cipher cipher = Cipher.getInstance("Blowfish");

cipher.init(Cipher.DECRYPT_MODE, key);

byte[] decrypted = cipher.doFinal(encryptedData);

return new String(decrypted);

}

public static void main(String[] args) throws Exception {

String data = "will this work?";

String encoded = encrypt(data);

System.out.println(encoded);

String decoded = decrypt(encoded);

System.out.println(decoded);

}

}

Hope this answers your questions.


版权声明:本文为weixin_29273849原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。