/** * 签名算法 */public static final String SIGNATURE_ALGORITHM = "MD5withRSA";/** * RSA最大解密密文大小 */public static final String KEY_ALGORITHM = "RSA";public static String sign(byte[] data, String privateKey) throws Exception {    byte[] keyBytes = Base64Utils.decode(privateKey);    PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);    KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);    PrivateKey privateK = keyFactory.generatePrivate(pkcs8KeySpec);    Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);    signature.initSign(privateK);    signature.update(data);    //Base64Utils.encode(signature.sign())    byte[] sign = signature.sign();    String s = conver16HexStr(sign);    return s;}

public static boolean verify(byte[] data, String publicKey, String sign)
throws Exception {
byte[] keyBytes = Base64Utils.decode(publicKey);
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
PublicKey publicK = keyFactory.generatePublic(keySpec);
Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);
signature.initVerify(publicK);
signature.update(data);
return signature.verify(Base64Utils.decode(sign));
}
/**
* 读取密钥信息
*
* @param in
* @return
* @throws IOException
*/
public static String readKey(InputStream in) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String readLine = null;
StringBuilder sb = new StringBuilder();
while ((readLine = br.readLine()) != null)
{
if (readLine.charAt(0) == ‘-‘)
{
continue;
} else
{
sb.append(readLine);
sb.append(‘\r’);
}
}

    return sb.toString();} InputStream inPrivate = getResources().getAssets().open("pkcs8_rsa_private_key.pem");String s1 = RSAUtils.readKey(inPrivate);

http://blog.csdn.net/mq2856992713/article/details/52587254
http://www.jianshu.com/p/8747d01a0450
http://blog.csdn.net/jdsjlzx/article/details/41441147

更多相关文章

  1. Android(安卓)使用des算法
  2. android之文件的写入与读取
  3. Android(安卓)福彩3D体彩排列(源码+算法)
  4. android 读取网络 xml 数据
  5. Android(安卓)SharedPreferences使用
  6. android获取imei和imsi
  7. Android读取手机联系人且获得联系人手机号+名称
  8. Android(安卓)读取raw、assets中的txt文件
  9. android读取usb设备数据

随机推荐

  1. Android实现TextView字符串波浪式跳动
  2. android中使用properties文件配置
  3. 敏捷个人手机应用iOS和Android公开注册
  4. Android启动画面翻转
  5. Android开发之消息处理机制(二)——消息循
  6. Android(安卓)自定义View 使用VelocityTr
  7. Android(安卓)Native中Android.mk编译链
  8. 加速 Android(安卓)依赖下载
  9. android 按钮倒计时读秒
  10. Android(安卓)Studio 本地化配置gradle的