惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - lgzh

spring boot 调用python ,研发环境下AttributeError: module 'clip' has no attribute 'load' el-tree选中背景变色 jquery datatable分页 png 变透明 Code First 不自动生成数据库 读取文件不是真实的具体路径 setZh.ini win10 开发mfc 64位 ocx控件 win7 下加载MSCOMCTL.OCX getGLES1ExtensionString: Could not find GLES 1.x config! IUnknown(TVarData(Params[0]).VPointer) as Range win8 VB6打开提示MSCOMCTL.ocx未注册 js 动态添加行,删除行,并获得select中值赋予 input SQL Server 自定义函数 返回树结构函数 .net 安装包制作 大图 预览 android java.net.socketexception permission denied an error occurred while signing: '.', hexadecimal value 0x00, is an invalid character IIS配置、403.6 无权查看,网页拒绝访问 C#后台调用Delphi 的Ocx
android 创建数字签名应用程序
lgzh · 2012-01-19 · via 博客园 - lgzh

一些人说android只支持BKS证书。不知道真还是假,所以首先创建了BKS证书。

步骤:

1、下载bcprov-jdk16-141.jar,放到\jre\lib\ext目录下

2、修改文件  jre6\lib\security\java.security, 在文件中添加:  security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider

   在这个文件中找到security.provider字样,后面序号递增,本机递增到10

3、创建keystore。命令:

      keytool -genkey -alias <别名> -keypass <密钥口令>  -keyalg Test -keysize 1024 -validity 365 -keystore <库文件名,如runcerts.keystore> -storepass <证书库密码> -dname "cn=testUsr, ou=产品部, o=XXX公司, c=CN, S=shandong" -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider

 4、签名及验证

   //读取密钥库:

   FileInputStream is=new FileInputStream("C:\\Inetpub\\runcerts.keystore");
    KeyStore ks=KeyStore.getInstance("BKS","BC");
    ks.load(is,"123456".toCharArray());
   is.close();
  

//读取私钥
 PrivateKey priKey1=(PrivateKey)ks.getKey("test2", "123456".toCharArray());
  privateKeyString =getKeyString(priKey1);

//签名
   SignText=DataSign(plainText,privateKeyString); 

//以下验证  
    //获得证书

  Certificate certificate=ks.getCertificate("test2");
  //获得证书
  PublicKey publicKey1=certificate.getPublicKey();
  
  publicKeyString=getKeyString(publicKey1);
  

//验证
  byte[]plainText1="Happy New Year!!Email:@qq.com".getBytes(); 
  boolean verySign=verify(plainText1,publicKeyString,SignText);
  String s2 = new Boolean(verySign).toString();
  System.out.print("验证结果:"+s2+"/n");

说明:大体是这个步骤,具体还有一些细节代码没有粘贴。