与消息摘要、数字签名和证书有关的Java类

在Java中使用消息摘要

java.security.MessageDigest

  • getInstance()  创建对象
  • update() 将输入的数据转换成消息摘要,本方法可以对非常大的数据进行杂凑,数据最长可达到2的64次方位,具体长度取决于底层的算法
  • digest() 返回字节数组形式的杂凑结果。如果只有少量的数据需要进行杂凑处理,可以直接将数据传送给digest(),因为该方法可以选择地对一个字节数组进行杂凑处理

 

消息摘要流

  • DigestInputStream 消息摘要输入流
  • DigestOutputStream 消息摘要输出流

 

消息认证码(MAC)

 

javax.crypto.Mac

  • getInstance() 创建对象
  • init() 使用密钥进行初始化
  • update() 将数据字节传给MAC,产生消息认证码
  • doFinal() 返回MAC码

 

在Java中使用数字签名

java.security.Signature

  • getInstance() 创建对象
  • initSign()和initVerify() 初始化签名对象,具体用哪一个取决于你是要进行签名,还是要进行验证
  • update() 将数据传送给它。如果要签名,就将待签名的数据传送给它;如果要验证签名,就把待验证的数据传送给它
  • sign() 如果正在进行签名,该方法就会返回用方法update()传送给签名对象的数据的签名结果
  • verify() 如果是要验证数据而不是签名,则要调用该方法,它会返回一个布尔值,以表明签名是否有效

 

在Java中使用证书

java.security.cert.Certificate

  • getPublicKey() 返回证书主体的公钥
  • verify() 验证证书的签名。它要求你输入证书发布者的公钥

java.security.cert.X509Certificate

java.security.cert.CertificateFactory

Keystore

java.security.KeyStore

    在Java中,keystore用于收集密钥和证书。keystore通常存放在文件中,但是它可以存放在其他媒介中,如数据库或者LDAP服务器。在keystore中有两种类型的实体:

  • 可信证书——指的是你相信它是由证书的宣称者所签署的证书。可信证书的一个例子就是CA。
  • 密钥——指的是可以用于数字签名或者加密的私钥或者对称密钥。在keystore中存放的密钥必须与该密钥的证书相对应。这不是可信证书,只是简单的包含拥有私钥的主题。

 

Keytool

    keytool是JDK所带的一个程序。它管理keystore,而且可以产生证书。下面逐个介绍每个选项:

  • -certreq——证书产生请求,用于请求CA签署一个证书。
  • -delete——从keystore中删除一个实体。
  • -export——从keystore中输出一个DER编码的证书。通过添加-rfc选项,就可以添加BASE64编码。注意,无法用此选项输出私钥。
  • -genkey——产生密钥对以及自签名的证书。可以用-keyalg指定使用的算法,如-keyalg RSA。
  • -help——显示使用keytool时可能的选项。
  • -identitydb——转换JDK1.1的身份数据库为Java2型的keystore。
  • -import——向keystore中输入新的证书。这一选项对于向一已经存在的别名添加新的证书和已经签署的证书非常有用。
  • -keyclone——在keystore中拷贝实体。
  • -keypassword——修改保护别名的口令。
  • -list——列出数据库中所有的别名
  • -printcert——显示证书。
  • -selfcert——产生一个自签名的证书。
  • -storepassword——修改keystore的口令。

    -v选项指定任何命令使用的verbose模式,-keystore选项让你可以指定想要打开的文件。

 

java.security.cert.X509CRL

 

创建自己的CA

sun.security.X509.*

  • X509CertImpl 提供X.509证书的底层实现。我们可以用这个类来创建新的证书,它提供了签发证书的方法sign()。
  • X509CertInfo 对存放在X.509证书中的内容进行封装。这允许我们为新证书设置一些新的属性。
  • X500Name 描述X.500名字。
  • AlgorithmId 描述密码算法。
  • CertificateSubjectName 主体的X.500名字。
  • CertificateValidity 证书的有效期。
  • CertificateSerialNumber 描述证书的序列号。对于给定的CA,这个序列号应该是惟一确定的。
  • CertificateIssuerName 证书发布者的X.500名字。
  • CertificateAlgorithmId 用于签署证书的算法ID号。

 

你可能感兴趣的:(java,jdk,算法,Security,sun)