密码学研究-Provider

简介:

引入

Provider 是研究密码学的第一步,它表示了对于JAVA安全框架的一种实现。对于JDK,它有许多默认的实现,当然了,你也可以不满意其默认的实现,而使用第三方或者自己根据API 开发SPI 然后提供自己的实现。


分析:

对于JDK默认的Provider,它们都在$JAVA_HOME/jre/lib/security目录下java.security文件中:

164910800.png

而默认的JDK提供了9种Provider如下:

165006415.png

我们可以通过JCA中的API 来获取这些Provider的信息:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package  com.charles.securitysearch;
import  java.security.Provider;
import  java.security.Provider.Service;
import  java.security.Security;
import  java.util.Set;
/**
  * Provider Usage Demo
  *@author cwang58
  *@created date: Oct 23, 2013
  */
public  class  ProviderSearch {
                                                                                                      
     /**
      * get all the providers of current JDK
      * @return
      */
     public  static  String getAllProviders(){
         StringBuilder sb =  new  StringBuilder();
         for  (Provider provider: Security.getProviders()){
             sb.append(getProviderInformation(provider)).append( "\n" );
                                                                                                              
         }
         return  sb.toString();
     }
                                                                                                      
     /**
      * get the information of a given provider
      * @param provider
      * @return
      */
     private  static  String getProviderInformation(Provider provider){
                                                                                                          
         StringBuilder sb =  new  StringBuilder();
         sb.append( "Provider Name:" ).append(provider.getName()).append( "\n" );
         sb.append( "Provider Version:" ).append(provider.getVersion()).append( "\n" );
         sb.append( "provider Info:" ).append(provider.getInfo()).append( "\n" ).append( "\n" );
         return  sb.toString();
                                                                                                          
                                                                                                          
     }
                                                                                                      
     public  static  void  main(String[] args){
                                                                                                          
         System.out.println( "Display all Providers in current JDK" );
         System.out.println(getAllProviders());
                                                                                                          
                                                                                                          
                                                                                                          
                                                                                                      
                                                                                                          
                                                                                                          
     }
                                                                                                          
}


显示结果如下:

172108416.png


显然,这个结果和我们在$JAVA_HOME/jre/lib/security中看到的是一致的。


后话:

而如果我们不想要JDK默认的provider,那么我们可以有两种方式添加,一个是编辑java.security文件,按照顺序在后面加上自己需要的provider类,另外一种方式就是用java.security.Security类的addProvider()和removeProvider()方法就可以完成了





本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/1314058,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
算法 安全 关系型数据库
密码学系列之七:数字签名
密码学系列之七:数字签名
|
1月前
|
算法 安全 PHP
密码学系列之二:密码学基本概念
密码学系列之二:密码学基本概念
密码学系列之二:密码学基本概念
|
2月前
|
人工智能 分布式计算 安全
【现代密码学】笔记1.2 -- 对称密钥加密、现代密码学的基本原则《introduction to modern cryphtography》现代密码学原理与协议
【现代密码学】笔记1.2 -- 对称密钥加密、现代密码学的基本原则《introduction to modern cryphtography》现代密码学原理与协议
72 0
|
2月前
|
机器学习/深度学习 安全 算法
【现代密码学】笔记9-10.3-- 公钥(非对称加密)、混合加密理论《introduction to modern cryphtography》
【现代密码学】笔记9-10.3-- 公钥(非对称加密)、混合加密理论《introduction to modern cryphtography》
26 0
|
4月前
|
算法 安全 程序员
区块链中的数学 - EdDSA签名机制
区块链中的数学 - EdDSA签名机制
75 0
|
7月前
|
设计模式 算法 安全
TLS1.3的后量子算法集成
本实验带您了解TLS1.3的后量子算法集成。
255 0
|
算法 数据安全/隐私保护
【密码学】密码学概述
每个人都有自己的秘密,如果不加密,在网上传输很容易被监听。如果涉及到金钱相关,密码泄露以后很容易造成损失。所以都会利用加密 cryptography 技术,保证信息的机密性 confidentiality。信息被加密以后变成了密文在网上传播,接收者拿到密文进行解密 cryptanalysis,解密以后就可以看到明文。对称密码 (symmetric cryptography)是指在加密和解密时使用同一密钥的方式。对应的加密方式是对称加密。目前广泛使用 AES。对称密码有多种别名,公共密钥密码(common-k
142 0
【密码学】密码学概述
|
算法 安全 小程序
懂了!国际算法体系对称算法DES原理
懂了!国际算法体系对称算法DES原理
懂了!国际算法体系对称算法DES原理
|
搜索推荐 算法 安全
加密算法理论概述
加密算法理论知识概述RSA AES
加密算法理论概述
|
区块链
Token,可能是比区块链更伟大的发明吗?
也许只有浮躁褪去,就如大潮退下,才会露出海底的珍珠一样,那时Token的魅力,才能真正展现……
1474 0