试学JDK11中文版java.security包

KeyPair 生成公钥私钥

KeyStore 存储证书和密钥

MessageDigest 摘要算法

SecureRandom 随机数

Signature 签名

CodeSigner 签名者

CodeSource   让url与证书或签名者相关联

以上几个类是此包中最重要的,也是证书中必须的几项。其余的类都是辅助这几个类的。

先摘抄Jdk文档:

Java加密构为JCA  由几个密码算法提供商和一组api构成。提供商如sun太阳公司,先把一堆实现密码的程序供现出来,java再提供一组封装类去操作太阳公司这一堆密码源程序。我们的编程就是去操作这些封装类。

api类有:

java.security.    javax.crypto. javax.crypto.spec. javax.crypto.interface

算法提供者有:

Sun.   Sunrsasign.     Sunjce.  sunjsse也就是说这个密码算法实现是一个大工程,一个人完成不了,是几家人合伙搞的。我们编程时要用什么api, 要在程序中写明调用哪个作者。java.security.provider 就是供货商基础类

下表列出了一些与安全相关的文件和工具的位置。

表 1-2 Java 安全文件和工具

文件名或工具名地点描述

java.security

<java-home>/conf/security

Java 安全的某些方面,例如配置提供程序,可以通过设置安全属性来定制。您可以在java.security文件中静态设置安全属性。安全属性也可以通过调用Security类(在 java.security包中)的适当方法来动态设置。

java.policy

<java-home>/conf/security

这是默认的系统策略文件;请参阅安全策略

密码策略目录

<java-home>/conf/security/policy

该目录包含多组管辖政策文件;请参阅加密强度配置

cacerts

<java-home>/lib/security

cacerts 文件表示具有证书颁发机构 (CA) 和其他受信任证书的系统范围的密钥库。有关配置和管理此文件的信息,请参阅Java Platform, Standard Edition Tools Reference中的keytool

keytooljarsigner

仅限 Windows: kinitklistktab

<java-home>/bin

有关安全相关工具的更多信息,请参阅Java 平台中的安全工具和命令,标准版工具参考。

对应我的deepin java系统路径为:

/usr/lib/jvm/java-11-openjdk-amd64/conf/security

1de12bd8afb040ce925bc11d34657399.png

 这是本机java的密码算法提供商

管理提供商的类为:

java.security.security, 可以用里面的封装方法找出已预置的各个供货方和他们的各种加密算法服务。

这个文件 java.security  里面有很多例子,设置

注意这是java命令行的路径, ,eclipse的路径不同。

这些供货方的算法在使用前必须注册,这个Java.security就是上面12个提供商预置算法的注册表,Java也可以动态注册,就是利用那个基类完成的。这样方便调用第三方的算法。当然你也可以自已写个算法。


学这个加解密类,难点是不知道加解密的原理,只有跟据供货方提供的方法去套用。还有就是封装方法的各种参数输入形式怎样使用。现正写一个简单的1+1=2算法,理解加深这些参数。

公钥基础设施PKI类,这是jdk验证证书的类,相关类位于两个中:

java.security

java.security.cert

Jdk 主要由普通类和安全类组成,安全类由提供商类和java操作供货商源程序的类组成。这些操作类又分为几部分:

消息摘要算法

数字签名算法

对称批量和流加密

不对称加密

密钥生成器

安全随机数生成器

基于密码的加密

椭圆曲线密码学

关键协议算法

消息身份验证代码

每一部分都有相关协议,Java首先提供Spi抽象类,规定各种方法。各个提供商再编写自己的spi服务子类。我们调用的基本上是各个服务商的子类。

如果你能力编写算法,也是根据某服务类的spi编写相应的子类。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JDKJava Development Kit)是Java开发工具的缩写,它是用于开发、编译和运行Java应用程序的软件JDK 11Java SE 11的开发工具版本,它提供了一系列的工具和库,用于开发和执行Java应用程序。 当你在运行Java程序时,如果出现java.lang.NoClassDefFoundError错误,通常是由于找不到所需的类文件引起的。这个错误可能有多种原因,下面是一些常见的解决方法: 1. 检查类路径:确保所需的类文件在类路径中。类路径是一个含所有类文件的目录或者JAR文件的集合。你可以使用命令`java -classpath`或者设置环境变量来指定类路径。 2. 检查依赖项:如果你的程序依赖于其他库或者框架,确保这些依赖项已经正确地添加到类路径中。你可以使用构建工具(如Maven或Gradle)来管理依赖项。 3. 检查类名和名:确保你在代码中正确地引用了所需的类名和名。大小写敏感,所以要注意大小写是否匹配。 4. 检查编译:如果你在编译Java程序时出现了错误,可能会导致缺少类文件。请确保你的程序成功编译,并且生成了正确的类文件。 5. 检查版本兼容性:有时候,如果你使用的JDK版本与程序所依赖的库不兼容,也可能导致NoClassDefFoundError错误。请确保你的JDK版本与程序所需的库版本匹配。 希望以上解决方法能够帮助你解决java.lang.NoClassDefFoundError错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值