1.Android KeyStore Java和Android环境配置及签名生成教程
2.VeriSign的签名代码签名证书可支持几种代码?
3.Java如何生成支付宝RSA2签名
4.Java 获取PDF中的数字签名信息
Android KeyStore Java和Android环境配置及签名生成教程
为了实现Android应用的签名,首先需要在本地计算机上配置Java环境和Android SDK。源码下面是签名具体的步骤:
一、Java环境配置
1. 首先访问Oracle官网下载最新版本的源码JDK。
2. 双击下载的签名exe文件进行安装,可以选择自定义安装路径。源码涨停跌停指标公式源码
3. 配置环境变量。签名在“系统属性”中找到“环境变量”,源码添加三个系统变量:JAVA_HOME、签名PATH、源码classpath,签名分别指向JDK的源码安装目录、JDK的签名bin目录和库目录,确保配置成功后在命令行输入“java”能正常显示帮助信息。源码
二、签名Android SDK环境配置
1. 下载Android SDK,选择exe文件进行安装或zip文件解压到指定目录。网站源码easck
2. 安装“SDK Manager.exe”用于下载和更新SDK包,以及“AVD Manager.exe”用于创建和管理虚拟机。
3. 配置Android SDK环境变量,将SDK目录下的“tools”和“platform-tools”文件夹路径追加到环境变量Path中,便于在命令行使用相关命令。
三、Android Keystore配置
1. 切换到JDK安装目录下的bin文件夹。
2. 利用内置命令生成RSA密钥。django blog源码
3. 将生成的keystore文件转换为JKS格式,以便于后续操作。
4. 使用JKS文件转换为p格式,适用于Android Keystore系统。
5. 通过命令行工具查看密钥内容,确保密钥生成成功。
通过以上步骤,开发者可以成功在本地配置Java和Android SDK环境,erp 源码 成熟并完成Android Keystore的生成与配置,为后续应用签名打下基础。
VeriSign的代码签名证书可支持几种代码?
他的代码签名分好多种呢, (1) 微软代码签名证书(Microsoft Authenticode Digital ID):数字签名.exe, .dll, .cab, .ocx(ActiveX);
(2) Java代码签名证书(Sun Java Signing Digital ID): 数字签名Sun Java .jar (Java Applet) 文件和 J2ME MIDlet Suite 文件;
(3) 微软Windows Logo认证证书("Designed for Windows logo" Digital IDs):用于数字签名微软Windows Logo认证的各种软件、硬件驱动程序等,提交已经签名的软件给微软测试认证,包括微软 Windows Hardware Quality Labs (WHQL) testing programs(Windows硬件质量实验室测试计划)等;
(4) NetScape 代码签名证书(Netscape Object Signing Digital ID): 数字签名NetScape 平台上的 Java 代码和 NetScape 浏览器和火狐浏览器(FireFox) 的各种插件和控件 Java Applet 文件 (.Java);
(5) 微软 Office 宏签名证书(Microsoft Office and VBA Signing Digital ID):数字签名微软Office 宏文件和VBA代码等文件;
(6) Macromedia 代码签名证书(Macromedia Shockwave Digital ID):数字签名 Macromedia Director 8 Shockwave Studio文件;
(7) Marimba 代码签名证书(Marimba Castanet Channel Signing Digital ID):数字签名 Marimba Casanet 文件
Java如何生成支付宝RSA2签名
对支付宝进行设置再回主页面进行转义,具体步骤如下。看thinkphp源码支付宝APP支付(Java后台生成签名具体步骤)
/
***支付宝支付
* @param orderId 订单编号
* @param actualPay 实际支付金额
* @return
*/
private String getOrderInfoByAliPay(String orderId,float actualPay) {
//回调页面
String ali_call_back_url = propertiesService.ALI_CALL_BACK_URL;
String seller_id = propertiesService.SELLER_ID;//商户编号
String[] parameters={
"service=\"mobile.securitypay.pay\"",//固定值(手机快捷支付)
"partner=\"\"",//合作身份者ID(位)
"_input_charset=\"utf-8\"",
"notify_url=\""+ali_call_back_url+"\"",//通知地址
"out_trade_no=\""+orderId+"\"",//商户内部订单号
"subject=\"测试\"",//测试
"payment_type=\"1\"",//固定值
"seller_id=\""+seller_id+"\"",//账户邮箱
"total_fee=\""+"0."+"\"",//支付金额(元)
"body=\"订单说明\"",//订单说明
"it_b_pay=\"m\""(订单过期时间 分钟过期无效)
};
String signOrderUrl = signAllString(parameters);
return signOrderUrl;
}
/
*** 支付宝签名
* @param array
* @return
*/
private String signAllString(String [] array){
StringBuffer sb = new StringBuffer("");
for (int i = 0; i < array.length; i++) {
if(i==(array.length-1)){
sb.append(array[i]);
}else{
sb.append(array[i]+"&");
}
}
System.out.println(sb.toString());
String sign = "";
try {
sign = URLEncoder.encode(RSA.sign(sb.toString(), AlipayConfig.private_key, "utf-8"), "utf-8");//private_key私钥
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
sb.append("&sign=\""+sign+"\"&");
sb.append("sign_type=\"RSA\"");
return sb.toString();
}
package com.alipay.sign;
import javax.crypto.Cipher;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.XEncodedKeySpec;
public class RSA{
public static final String SIGN_ALGORITHMS = "SHA1WithRSA";
/
*** RSA签名
* @param content 待签名数据
* @param privateKey 商户私钥
* @param input_charset 编码格式
* @return 签名值
*/
public static String sign(String content, String privateKey, String input_charset)
{
try
{
byte[] decode = Base.decode(privateKey);
PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(decode );
KeyFactory keyf= KeyFactory.getInstance("RSA");
PrivateKey priKey= keyf.generatePrivate(priPKCS8);
java.security.Signature signature = java.security.Signature.getInstance(SIGN_ALGORITHMS);
signature.initSign(priKey);
signature.update( content.getBytes(input_charset) );
byte[] signed = signature.sign();
return Base.encode(signed);
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
/
*** RSA验签名检查
* @param content 待签名数据
* @param sign 签名值
* @param ali_public_key 支付宝公钥
* @param input_charset 编码格式
* @return 布尔值
*/
public static boolean verify(String content, String sign, String ali_public_key, String input_charset)
{
try
{
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
byte[] encodedKey = Base.decode(ali_public_key);
PublicKey pubKey = keyFactory.generatePublic(new XEncodedKeySpec(encodedKey));
java.security.Signature signature = java.security.Signature
.getInstance(SIGN_ALGORITHMS);
signature.initVerify(pubKey);
signature.update( content.getBytes(input_charset) );
boolean bverify = signature.verify( Base.decode(sign) );
return bverify;
}
catch (Exception e)
{
e.printStackTrace();
}
return false;
}
/
*** 解密
* @param content 密文
* @param private_key 商户私钥
* @param input_charset 编码格式
* @return 解密后的字符串
*/
public static String decrypt(String content, String private_key, String input_charset) throws Exception {
PrivateKey prikey = getPrivateKey(private_key);
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, prikey);
InputStream ins = new ByteArrayInputStream(Base.decode(content));
ByteArrayOutputStream writer = new ByteArrayOutputStream();
//rsa解密的字节大小最多是,将需要解密的内容,按位拆开解密
byte[] buf = new byte[];
int bufl;
while ((bufl = ins.read(buf)) != -1) {
byte[] block = null;
if (buf.length == bufl) {
block = buf;
} else {
block = new byte[bufl];
for (int i = 0; i < bufl; i++) {
block[i] = buf[i];
}
}
writer.write(cipher.doFinal(block));
}
return new String(writer.toByteArray(), input_charset);
}
/
*** 得到私钥
* @param key 密钥字符串(经过base编码)
* @throws Exception
*/
public static PrivateKey getPrivateKey(String key) throws Exception {
byte[] keyBytes;
keyBytes = Base.decode(key);
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PrivateKey privateKey = keyFactory.generatePrivate(keySpec);
return privateKey;
}
}
Java 获取PDF中的数字签名信息
本文示例如何使用Java获取PDF文档中的数字签名信息,包括签名人、位置、日期、原因、****以及签名坐标等。程序环境要求包括导入jar包至Java程序或在maven中配置相应的依赖。具体步骤如下:
首先,需要下载并解压spire.pdf.jar,将lib文件夹内的jar包手动导入Java项目。或者,通过maven配置pom.xml文件,指定spire依赖,简化导入过程。
在Java代码中,可使用spire库的PDF处理功能来获取数字签名信息。实现过程涉及解析PDF文件,定位并读取签名元素,提取相关信息。具体实现细节和代码示例可参考相关文章。
获取签名信息后,开发者能深入了解文档中的签名细节,如签名人、签名时间、地点等,有助于文档的完整性和安全性审查。
为了帮助开发者更好地理解和操作PDF文档,我们提供了一系列文章作为参考。这些文章涵盖了使用Java处理PDF文档的各种技巧和方法,包括数字签名的识别与提取。
在阅读完本文后,希望读者能够深入理解如何通过Java获取PDF中的数字签名信息。此外,我们鼓励读者关注本专栏,我们将持续更新更多关于Java操作PDF文档的实用技巧和案例。