获取签名公钥
2015-08-24 15:49
218 查看
public class GetPublicKey {
/**
* 获取签名公钥
* @param mContext
* @return
*/
protected static String getSignInfo(Context mContext) {
String signcode = "";
try {
PackageInfo packageInfo = mContext.getPackageManager().getPackageInfo(
GetAppInfo.getPackageName(mContext), PackageManager.GET_SIGNATURES);
Signature[] signs = packageInfo.signatures;
Signature sign = signs[0];
signcode = parseSignature(sign.toByteArray());
signcode = signcode.toLowerCase();
} catch (Exception e) {
Log.e(Constants.TAG, e.getMessage(), e);
}
return signcode;
}
protected static String parseSignature(byte[] signature) {
String sign = "";
try {
CertificateFactory certFactory = CertificateFactory
.getInstance("X.509");
X509Certificate cert = (X509Certificate) certFactory
.generateCertificate(new ByteArrayInputStream(signature));
String pubKey = cert.getPublicKey().toString();
String ss = subString(pubKey);
ss = ss.replace(",", "");
ss = ss.toLowerCase();
int aa = ss.indexOf("modulus");
int bb = ss.indexOf("publicexponent");
sign = ss.substring(aa + 8, bb);
} catch (CertificateException e) {
Log.e(Constants.TAG, e.getMessage(), e);
}
return sign;
}
public static String subString(String sub) {
Pattern pp = Pattern.compile("\\s*|\t|\r|\n");
Matcher mm = pp.matcher(sub);
return mm.replaceAll("");
}
}
/**
* 获取签名公钥
* @param mContext
* @return
*/
protected static String getSignInfo(Context mContext) {
String signcode = "";
try {
PackageInfo packageInfo = mContext.getPackageManager().getPackageInfo(
GetAppInfo.getPackageName(mContext), PackageManager.GET_SIGNATURES);
Signature[] signs = packageInfo.signatures;
Signature sign = signs[0];
signcode = parseSignature(sign.toByteArray());
signcode = signcode.toLowerCase();
} catch (Exception e) {
Log.e(Constants.TAG, e.getMessage(), e);
}
return signcode;
}
protected static String parseSignature(byte[] signature) {
String sign = "";
try {
CertificateFactory certFactory = CertificateFactory
.getInstance("X.509");
X509Certificate cert = (X509Certificate) certFactory
.generateCertificate(new ByteArrayInputStream(signature));
String pubKey = cert.getPublicKey().toString();
String ss = subString(pubKey);
ss = ss.replace(",", "");
ss = ss.toLowerCase();
int aa = ss.indexOf("modulus");
int bb = ss.indexOf("publicexponent");
sign = ss.substring(aa + 8, bb);
} catch (CertificateException e) {
Log.e(Constants.TAG, e.getMessage(), e);
}
return sign;
}
public static String subString(String sub) {
Pattern pp = Pattern.compile("\\s*|\t|\r|\n");
Matcher mm = pp.matcher(sub);
return mm.replaceAll("");
}
}
相关文章推荐
- PHP字符串比较
- selenium 找元素的方法
- 单线程中fgets阻塞select/poll/epoll的解决方法
- Apache和php的关系
- Java Eclipse(mac)环境使用maven 加载spring,hibernate 及java的一些配置
- Rabbit Party
- tesseract单个汉字识别为两个字解决
- Codeforces 313B : Ilya and Queries
- NSUserDefaults
- 用标准C编写COM dll
- jquery+html5烂漫爱心表白动画代码分享
- Yii2中验证码的使用
- 【Loadrunner】初学Loadrunner——IP欺骗
- POJ 1273 网络流(EK,Dinic,ISAP)
- jsp直接读取mysql数据库内容
- UE4 Light Propagation Volumes
- 不用栈检查小括号、中括号、大括号的匹配
- Android项目利用jinkens自动打包
- 二分图的最大匹配、完美匹配和匈牙利算法
- poj--2778DNA Sequence+AC自动机+矩阵快速幂