`
LovePro
  • 浏览: 3551 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

数字证书学习

 
阅读更多
bouncycastle公司已封装了ASN1 证书对象,虽现在还未找到通过asn1文件生成bouncycastle的ASN1对象,但也可人工编写,使其具有与证书相类似的ASN1功能。
实例:
1)asn1文件
import java.util.Enumeration;
AsnLdap DEFINITIONS IMPLICIT TAGS ::= BEGIN
LdapConfigBo ::=SEQUENCE{
ipAddr OCTET STRING,
port   INTEGER,
baseDn OCTET STRING,
userDn OCTET STRING,
userPassword OCTET STRING,
response [0] BOOLEAN OPTIONAL,
info     [1] OCTET STRING OPTIONAL
}
END
2)自己编写的java对象
import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1EncodableVector;
import org.bouncycastle.asn1.ASN1OctetString;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.ASN1TaggedObject;
import org.bouncycastle.asn1.DERBoolean;
import org.bouncycastle.asn1.DERInteger;
import org.bouncycastle.asn1.DERObject;
import org.bouncycastle.asn1.DERSequence;
import org.bouncycastle.asn1.DERTaggedObject;





public class LdapConfigBo extends ASN1Encodable
{

public ASN1OctetString ipAddr;
public DERInteger port ;
public ASN1OctetString baseDn;
public ASN1OctetString userDn ;
public ASN1OctetString userPassword ;
public DERBoolean response;//响应结果
public ASN1OctetString info ;//响应消息
public  LdapConfigBo(){};
public  LdapConfigBo(ASN1Sequence seq)
    {
        Enumeration en = seq.getObjects();

        ipAddr = ASN1OctetString.getInstance(en.nextElement());
        port = DERInteger.getInstance(en.nextElement());
        baseDn = ASN1OctetString.getInstance(en.nextElement());
        userDn = ASN1OctetString.getInstance(en.nextElement());
        userPassword = ASN1OctetString.getInstance(en.nextElement());
        while (en.hasMoreElements())
        {
        ASN1TaggedObject tObj = (ASN1TaggedObject)en.nextElement();

            switch (tObj.getTagNo())
            {
            case 0:
            response = DERBoolean.getInstance(tObj, true);
                break;
            case 1:
            info = ASN1OctetString.getInstance(tObj, true);
                break;
             default:
                throw new IllegalArgumentException("unknown tag number: " + tObj.getTagNo());
            }
         }
    }
public static LdapConfigBo getInstance(Object o)
    {
        if (o instanceof LdapConfigBo)
        {
            return (LdapConfigBo)o;
        }

        if (o instanceof ASN1Sequence)
        {
            return new LdapConfigBo((ASN1Sequence)o);
        }

        throw new IllegalArgumentException("Invalid object: " + o.getClass().getName());
    }
@Override
public DERObject toASN1Object() {
ASN1EncodableVector v = new ASN1EncodableVector();
        v.add(ipAddr);
        v.add(port);
        v.add(baseDn);
        v.add(userDn);
        v.add(userPassword);
        addOptional(v, 0, response);
        addOptional(v, 1, info);
        return new DERSequence(v);
}
    private void addOptional(ASN1EncodableVector v, int tagNo, ASN1Encodable obj)
    {
        if (obj != null)
        {
            v.add(new DERTaggedObject(true, tagNo, obj));
        }
    }

}
0
2
分享到:
评论

相关推荐

    数字证书实验详细步骤及原理

    学生将学习如何使用数字证书建立安全 Web 通信和实现电子邮件安全。 二、实验内容 实验内容包括两部分: 1. 利用数字证书建立安全 Web 通信 2. 利用数字证书实现电子邮件安全 三、实验步骤 (一)安全 Web 通信...

    PKI/CA与数字证书技术大全

    标题"PKI/CA与数字证书技术大全"暗示了主题是关于公钥基础设施(Public Key Infrastructure, PKI)和认证授权机构(Certification Authority, CA),以及与之相关的数字证书技术。这是一套全面的资料,旨在帮助读者...

    数字证书应用系统的设计与实现

    【数字证书应用系统设计与实现】的论述集中在构建一个基于Java和Microsoft SQL Server 2008的数字证书系统,该系统旨在加深学习者对数字证书原理和应用的理解,同时改进实验室教学环境。数字证书是网络安全领域的...

    数字证书的代码以及文档说明

    在IT领域,数字证书是一种重要的安全机制,尤其是在网络通信中,用于验证参与者的身份。Java作为广泛使用的编程语言,提供了对数字证书的强大支持。本文将深入探讨Java中的数字证书概念,生成过程,以及相关的文档...

    数字证书制作工具

    学习这部分内容,对于理解数字证书的工作原理和应用至关重要。 总的来说,"数字证书制作工具"提供了创建和管理数字证书的能力,这对于IT专业人员进行系统安全配置、应用开发和网络通信安全测试都具有重要意义。通过...

    数字证书与加密认证试验

    1. **数字证书的生成与管理**:学习如何使用工具如OpenSSL生成数字证书,并了解如何管理这些证书(包括签发、撤销等操作)。 2. **加密算法的应用**:实验可能包括了对称加密与非对称加密算法的实际应用,比如AES、...

    数字证书制作工具DEMO

    作为数字证书学习和测试工具,该DEMO可以实现颁发根证书,签发下级证书;制作PFX证书,下载证书到KEY的功能。支持所有厂家的USBKEY。

    微软数字证书操作API函数使用

    学习微软数字证书操作API函数时,还需要关注以下几点: - **证书存储**:Windows系统有多个证书存储区,如个人、受信任的根证书颁发机构等,了解它们的区别和使用场景非常重要。 - **证书撤销列表(CRL)**:当证书被...

    通俗易懂的数字证书原理

    ### 数字证书原理详解 #### 一、基础知识 在深入探讨数字证书之前,我们需要了解一些基本的概念和技术背景,包括公钥...通过学习这些内容,读者可以更好地理解和掌握数字证书的原理及其在网络通信安全中的重要作用。

    C和C++代码锦囊数字证书

    在IT领域,尤其是在软件开发中,C和C++是两种非常重要的编程语言,它们被广泛应用于系统级编程、游戏开发以及高性能计算等场景。...通过学习和实践这些内容,开发者可以更好地理解和利用数字证书,提升软件的安全性能。

    Java 数字签名、数字证书生成源码.7z

    总结,这个压缩包中的源代码提供了关于Java数字签名和数字证书的实战示例,是学习和实践Java安全编程的重要资源。通过学习和运用这些代码,开发者能够更好地理解和应用密码学原理,增强软件的安全特性。

    java安全通信数字证书

    【Java安全通信与数字证书详解】 在Java编程中,安全通信是确保数据在传输过程中不被篡改或窃取的关键。数字证书作为一种重要的安全机制,用于验证通信双方的身份,保证信息的真实性。本篇文章将深入探讨Java中如何...

    数字证书及其简单数字签名的实现

    在IT领域,数字证书和数字签名是网络安全的重要组成部分,它们为网络通信提供了身份验证和数据完整性保障。本文将深入探讨这两个概念以及如何实现它们。首先,我们从标题“数字证书及其简单数字签名的实现”出发,...

    制作数字证书工具 包集合(cert2spc.exe、makecab.exe等)

    在IT安全领域,数字证书是确保网络通信安全的重要手段,它们用于验证软件、网站或个人的身份,防止中间人攻击和欺诈。本包集合提供了一系列用于制作数字证书的工具,包括`cert2spc.exe`和`makecab.exe`,以及相关的...

    CA 基础知识讲座 数字证书 PPT

    【CA基础知识讲座 数字证书 PPT】是一份深入讲解CA(Certificate Authority)和数字证书的教育资料,适合学习和理解网络安全及加密技术。CA作为数字证书的认证中心,它的主要职责是验证证书申请者的身份,并为其签发...

    加密 RSA 数字签名 数字证书 实例

    在IT领域,加密、RSA数字签名以及数字证书是网络安全中至关重要的概念,它们共同构建了互联网上安全通信的基础。下面将详细阐述这些知识点,并结合"EncryptMethod"这一压缩包文件中的可能内容进行分析。 首先,加密...

    数字证书

    标题中的“数字证书”指的是网络通信中用于验证身份的安全机制,它是网络安全的重要组成部分。数字证书包含了一组公钥和相关的身份信息,由权威的证书颁发机构(CA)签名,确保了信息传输的安全性和不可抵赖性。 在...

    自信数字证书工具165

    总的来说,自信数字证书工具165是一款方便用户快速创建和管理数字证书的软件,尤其适合测试和学习环境。用户可以通过这个工具了解数字证书的工作原理,并在需要时自签证书。但在实际的在线服务和通信中,应依赖于受...

    数字证书原理,公钥私钥加密原理

    数字证书和公钥私钥加密是当今网络安全中的基础元素。...如果希望进一步学习相关技术,可以参阅相关的专业书籍和在线资源,或者通过实践操作加深理解,如使用OpenSSL或Windows的makecert工具来自己生成和管理数字证书。

    数字证书管理源代码_sourcecode

    在IT领域,数字证书是一种重要的安全机制,广泛应用于网络通信、数据加密以及身份验证等场景。...了解并理解这些源码有助于深入学习数字证书和公钥基础设施(PKI)的相关知识,对于开发涉及网络安全的应用至关重要。

Global site tag (gtag.js) - Google Analytics