Android端RSA加密数据送Java服务端解密时出现BadPaddingException


原因:Android系统使用的虚拟机(dalvik)跟SUN标准JDK是有所区别的,其中他们默认的RSA实现就不同。即Android端用Cipher.getInstance(“RSA”)方法进行加密时,使用的provider是Bouncycastle Security provider,Bouncycastle Security provider默认实现的是“RSA/None/NoPadding”算法,而服务器(PC)端用Cipher.getInstance(“RSA”)进行解密时,使用的是Sun的security provider,实现的是“RSA/None/PKCS1Padding”算法,所以,解密时会失败。

正确的设置方法:Java服务端代码

Cipher cipher = Cipher.getInstance(“RSA”);

Android端代码

Cipher cipher = Cipher.getInstance(“RSA/None/PKCS1Padding”);

Advertisements

一些常用的 HTTP Content-type


在Java Web项目中,经常会遇到需要设置Response ContentType,列出几种常用的Content-type,备忘。

  • text/plain – 文本内容
  • text/html – html内容
  • application/vnd.ms-excel – MS Office Excel
  • application/pdf – PDF
  • application/octet-stream – 二进制文件

使用方法:通常使用response.setContentType(“text/plain; charset=UTF-8“);

参考:Multipart Internet Mail Extensions (MIME)