在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 国密算法实现,包含SM2 SM3 SM4和数字签名、数字证书的验证以及相应的说明文档
摘要:JAVA源码,系统相关,数字签名,数字证书 Java 数字签名、数字证书的相关实例。 关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名...
利用MS的CAPICOM控件与Java结合实现B/S系统中的数字签名 功能描述: 在前台利用CAPICOM读取USB盘中的证书与用户私钥,对明文求SHA1的摘要,并对摘要进行签名。 仅将签名后的密文与前台表单中的明文传到后台。
摘要:JAVA源码,系统相关,数字签名,数字证书 Java 数字签名、数字证书的相关实例。 关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名...
此外还讨论了消息摘要、证书和数字签名,并介绍了如何利用Java所提供的功能建立类签名,以及如何自行实现签名功能。通过介绍,您可以了解到如何编写一个类装载器,使之能够识别签名类,对签名进行验证,并可以结合...
内容涉及Java加密和解密,反编译和反反编译,对类、成员变量、方法的攻击和保护,消息摘要,消息验证码,数字签名,口令保护,数字证书和证书链的生成、签发、检验和维护,SSL和HTTPS客户及服务器程序、基于代码位置...
摘要:JAVA源码,系统相关,数字签名,数字证书 Java 数字签名、数字证书的相关实例。 关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名...
摘要:JAVA源码,系统相关,数字签名,数字证书 Java 数字签名、数字证书的相关实例。 关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名...
Java和Android安全加密专题:对称加密,非对称加密,数字摘要,数字签名,数字证书,Https编程
摘要:JAVA源码,系统相关,数字签名,数字证书 Java 数字签名、数字证书的相关实例。 关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名...
7.7.4 数字签名算法 138 7.7.5 基于RSA的签名算法 138 7.7.6 DSA密钥对产生算法 138 7.7.7 RSA密钥对产生算法 140 7.7.8 DSA参数产生算法 140 第8章 发展方向 141 8.1 安全管理 141 8.2 JDK 特性的改善 141 8.3 Java...
摘要:JAVA源码,系统相关,数字签名,数字证书 Java 数字签名、数字证书的相关实例。 关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名...
摘要:JAVA源码,系统相关,数字签名,数字证书 Java 数字签名、数字证书的相关实例。 关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名...
全书包含3个部分,基础篇对Java企业级应用的安全知识、密码学核心知识、与Java加密相关的API和通过权限文件加强系统安全方面的知识进行了全面的介绍;实践篇不仅对电子邮件传输算法、消息摘要算法、对称加密算法、非...
实践篇不仅对电子邮件传输算法、消息摘要算法、对称加密算法、非对称加密算法、数字签名算法等现今流行的加密算法的原理进行了全面而深入的剖析,而且还结合翔实的范例说明了各种算法的具体应用场景;综合应用篇既...
实践篇不仅对电子邮件传输算法、消息摘要算法、对称加密算法、非对称加密算法、数字签名算法等现今流行的加密算法的原理进行了全面而深入的剖析,而且还结合翔实的范例说明了各种算法的具体应用场景;综合应用篇既...
本书首先概述了计算机和网络安全概念并解释了Java安全模型,并在此基础上,详细描述了Java 2平台中新增加的许多安全结构方面的措施,同时对Java安全性的实施提出了使用指导,描绘了如何定制、扩展和精化安全结构以及...
实践篇不仅对电子邮件传输算法、消息摘要算法、对称加密算法、非对称加密算法、数字签名算法等现今流行的加密算法的原理进行了全面而深入的剖析,而且还结合翔实的范例说明了各种算法的具体应用场景;综合应用篇既...