X.509数字证书的结构与解析

6 篇文章 10 订阅
订阅专栏

1、什么叫数字签名

数字签名:

将报文按双方约定的HASH算法计算得到一个固定位数的报文摘要。在数学上保证:只要改动报文中任何一位,重新计算出的报文摘要值就会与原先的值不相符。这样就保证了报文的不可更改性。

将该报文摘要值用发送者的私人密钥加密,然后连同原报文一起发送给接收者,而产生的报文即称数字签名

2、什么叫数字证书

数字证书:

数字证书就是互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在Internet上验证您身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由权威机构-----CA机构,又称为证书授权,(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。

3、交互过程

  1. 鲍勃有两把钥匙,一把是公钥,另一把是私钥。
    这里写图片描述
  2. 鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。
    这里写图片描述
  3. 苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果
    这里写图片描述
  4. 鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。
    这里写图片描述
  5. 鲍勃给苏珊回信,决定采用 “数字签名”。他写完后先用Hash函数,生成信件的摘要(digest)。
    这里写图片描述
  6. 然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)。
    这里写图片描述
  7. 鲍勃将这个签名,附在信件下面,一起发给苏珊。
    这里写图片描述
  8. 苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。
    这里写图片描述
  9. 苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。
    这里写图片描述
  10. 复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成"数字签名",写信给苏珊,让苏珊用假的鲍勃公钥进行解密。
    这里写图片描述
  11. 后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)
    这里写图片描述
  12. 鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。
    这里写图片描述
  13. 苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的。
    这里写图片描述

4、什么叫X.509数字证书

X.509 标准规定了证书可以包含什么信息,并说明了记录信息的方法(数据格式)。除了签名外,所有 X.509 证书还包含以下数据:

**版本**
识别用于该证书的 X.509 标准的版本,这可以影响证书中所能指定的信息。迄今为止,已定义的版本有三个。
**序列号**
发放证书的实体有责任为证书指定序列号,以使其区别于该实体发放的其它证书。此信息用途很多。例如,如果某一证书被撤消,其序列号将放到证书撤消清单 (CRL) 中。
**签名算法标识符**
用于识别 CA 签写证书时所用的算法。
**签发人姓名**
签写证书的实体的 X.500 名称。它通常为一个 CA。 使用该证书意味着信任签写该证书的实体(注意:有些情况下(例如根或顶层 CA 证书),签发人会签写自己的证书)。
**有效期**
每个证书均只能在一个有限的时间段内有效。该有效期以起始日期和时间及终止日期和时间表示,可以短至几秒或长至一世纪。所选有效期取决于许多因素,例如用于签写证书的私钥的使用频率及愿为证书支付的金钱等。它是在没有危及相关私钥的条件下,实体可以依赖公钥值的预计时间。
**主体名**
证书可以识别其公钥的实体名。此名称使用 X.500 标准,因此在Internet中应是唯一的。它是实体的特征名 (DN),例如,
CN=Java Duke,OU=Java Software Division,O=Sun Microsystems Inc,C=US
(这些指主体的通用名、组织单位、组织和国家)。
**主体公钥信息**
这是被命名实体的公钥,同时包括指定该密钥所属公钥密码系统的算法标识符及所有相关的密钥参数。

这里写图片描述
常见的X.509证书格式包括:

cer/crt是用于存放证书,它是2进制形式存放的,不含私钥。

pem跟crt/cer的区别是它以Ascii来表示,可以用于存放证书或私钥。

pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式。

p10是证书请求。

p7r是CA对证书请求的回复,只用于导入

p7b以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。

证书文件/私钥文件
在HTTPS通讯中最常用的是cer/crt和pem。下面以pem格式的证书为例进行说明。下面是一个完整的PEM格式证书:

Certificate:

Data:

     Version: 1 (0x0)

Serial Number: 1 (0x1)

Signature Algorithm: md5WithRSAEncryption

Issuer: C=US, ST=Montana, L=Bozeman, O=sawtooth, OU=consulting, CN=www.sawtooth-consulting.com/emailAddress=info@yassl.com

Validity

    Not Before: Jun 30 18:52:17 2010 GMT

    Not After : Mar 26 18:52:17 2013 GMT

Subject: C=US, ST=Montana, L=Bozeman, O=yaSSL, OU=support, CN=www.yassl.com/emailAddress=info@yassl.com

Subject Public Key Info:

Public Key Algorithm: rsaEncryption

RSA Public Key: (512 bit)

    Modulus (512 bit):

        00:c6:7b:c0:68:81:2f:de:82:3f:f9:ac:c3:86:4a:66:b7:ec:d4:f1:f6:64:21:ff:f5:a2:34:42:d0:38:9f:c6:dd:3b:6e:26:65:6a:54:96:dd:d2:7b:eb:36:a2:ae:7e:2a:9e:7e:56:a5:b6:87:9f:15:c7:18:66:7e:16:77:e2:a7

    Exponent: 65537 (0x10001)

Signature Algorithm: md5WithRSAEncryption

    58:a9:98:e7:16:52:4c:40:e7:e1:47:92:19:1b:3a:8f:97:6c:7b:b7:b0:cb:20:6d:ad:b5:d3:47:58:d8:e4:f2:3e:32:e9:ef:87:77:e5:54:36:f4:8d:50:8d:07:b4:77:45:ea:9d:a4:33:36:9b:0b:e0:74:58:11:c5:01:7b:4d

-----BEGIN CERTIFICATE-----

MIICFDCCAb4CAQEwDQYJKoZIhvcNAQEEBQAwgZ4xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdNb250YW5hMRAwDgYDVQQHEwdCb3plbWFuMREwDwYDVQQKEwhzYXd0b290aDETMBEGA1UECxMKY29uc3VsdGluZzEkMCIGA1UEAxMbd3d3LnNhd3Rvb3RoLWNvbnN1bHRpbmcuY29tMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHlhc3NsLmNvbTAeFw0xMDA2MzAxODUyMTdaFw0xMzAzMjYxODUyMTdaMIGKMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHTW9udGFuYTEQMA4GA1UEBxMHQm96ZW1hbjEOMAwGA1UEChMFeWFTU0wxEDAOBgNVBAsTB3N1cHBvcnQxFjAUBgNVBAMTDXd3dy55YXNzbC5jb20xHTAbBgkqhkiG9w0BCQEWDmluZm9AeWFzc2wuY29tMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMZ7wGiBL96CP/msw4ZKZrfs1PH2ZCH/9aI0QtA4n8bdO24mZWpUlt3Se+s2oq5+Kp5+VqW2h58VxxhmfhZ34qcCAwEAATANBgkqhkiG9w0BAQQFAANBAFipmOcWUkxA5+FHkhkbOo+XbHu3sMsgba2100dY2OTyPjLp74d35VQ29I1QjQe0d0XqnaQzNpsL4HRYEcUBe00=

-----END CERTIFICATE-----

     从Certificate开始到“-----BEGIN CERTIFICATE-----”为止,中间的内容是证书的明文格式。

    从“-----BEGIN CERTIFICATE-----”开始到“-----END CERTIFICATE-----”为止是证书的明文格式经过ASN.1编码再经过Base64编码得到的。
 对于私钥文件,真正的私钥是包含在字符串"-----BEGIN PRIVATE KEY-----"和字符串"-----END PRIVATE KEY-----"之间。

如果该私钥文件是pkcs8格式的,那么该私钥文件的格式为

PrivateKeyInfo ::= SEQUENCE {

    version Version(INTEGER),

    privateKeyAlgorithm PrivateKeyAlgorithmIdentifier (AlgorithmIdentifier),

    privateKey PrivateKey(OCTET STRING),

    attributes [0] IMPLICIT Attributes OPTIONAL(SET OF Attribute)

}

    如果不是pkcs8格式的,那么"-----BEGIN PRIVATE KEY-----"和"-----END PRIVATE KEY-----"之间的内容就是私钥的Base64编码。

    在客户端或服务器在交换证书时,需要首先把Base64编码转换为ASCII编码再进行传输。

**
公钥和私钥
**

公钥和私钥是证书文件和私钥文件中最核心的内容。

在SSL/TLS协议中需要是用公钥算法,来进行对称密钥的交换。
最常见的算法是RSA和DH,而RSA算法和DH算法的公钥、私钥的数据格式是不同的。

5、X.509证书数据结构

Certificate ::= SEQUENCE {

        tbsCertificate       TBSCertificate, -- 证书主体

        signatureAlgorithm   AlgorithmIdentifier, -- 证书签名算法标识

        signatureValue       BIT STRING --证书签名值,是使用signatureAlgorithm部分指定的签名算法对tbsCertificate证书主题部分签名后的值.

         }

   TBSCertificate ::= SEQUENCE {

        version         [0] EXPLICIT Version DEFAULT v1, -- 证书版本号

        serialNumber         CertificateSerialNumber, -- 证书序列号,对同一CA所颁发的证书,序列号唯一标识证书

        signature            AlgorithmIdentifier, --证书签名算法标识

        issuer               Name,                --证书发行者名称

        validity             Validity,            --证书有效期

        subject              Name,                --证书主体名称

        subjectPublicKeyInfo SubjectPublicKeyInfo,--证书公钥

        issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,

                             -- 证书发行者ID(可选),只在证书版本2、3中才有

        subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,

                             -- 证书主体ID(可选),只在证书版本2、3中才有

        extensions      [3] EXPLICIT Extensions OPTIONAL

                             -- 证书扩展段(可选),只在证书版本3中才有

        }

   Version ::= INTEGER { v1(0), v2(1), v3(2) }

   CertificateSerialNumber ::= INTEGER

 

   AlgorithmIdentifier ::= SEQUENCE {

        algorithm               OBJECT IDENTIFIER,

        parameters              ANY DEFINED BY algorithm OPTIONAL }

   parameters:

   Dss-Parms ::= SEQUENCE { -- parameters ,DSA(DSS)算法时的parameters,

RSA算法没有此参数

        p             INTEGER,

        q             INTEGER,

        g             INTEGER }

 

signatureValue:

Dss-Sig-Value ::= SEQUENCE { -- sha1DSA签名算法时,签名值

                   r       INTEGER,

                      s       INTEGER }

 

   Name ::= CHOICE {

     RDNSequence }

   RDNSequence ::= SEQUENCE OF RelativeDistinguishedName

   RelativeDistinguishedName ::=

     SET OF AttributeTypeAndValue

   AttributeTypeAndValue ::= SEQUENCE {

     type     AttributeType,

     value    AttributeValue }

   AttributeType ::= OBJECT IDENTIFIER

   AttributeValue ::= ANY DEFINED BY AttributeType

 

   Validity ::= SEQUENCE {

        notBefore      Time,  -- 证书有效期起始时间

        notAfter       Time  -- 证书有效期终止时间

        }

   Time ::= CHOICE {

        utcTime        UTCTime,

        generalTime    GeneralizedTime }

   UniqueIdentifier ::= BIT STRING

   SubjectPublicKeyInfo ::= SEQUENCE {

        algorithm            AlgorithmIdentifier, -- 公钥算法

        subjectPublicKey     BIT STRING            -- 公钥值

        }

subjectPublicKey:

RSAPublicKey ::= SEQUENCE { -- RSA算法时的公钥值

         modulus            INTEGER, -- n

         publicExponent     INTEGER -- e -- }

 

   Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension

   Extension ::= SEQUENCE {

        extnID      OBJECT IDENTIFIER,

        critical    BOOLEAN DEFAULT FALSE,

        extnValue   OCTET STRING }

X.509证书的编码及解析:程序解析以及winhex模板解析

数字证书X.509格式详解
BiigPanda的博客
01-10 6450
X.509是一种非常通用的证书格式。所有的证书都符合ITU-T X.509国际标准,因此(理论上)为一种应用创建的证书可以用于任何其他符合X.509标准的应用。X.509证书的结构是用ASN1(Abstract Syntax Notation One)进行描述数据结构,并使用ASN.1语法进行编码。
PKI(公钥基础设施)之数字证书结构
FunFei123的博客
05-26 3844
#1 介绍 公开密钥认证(英语:Public key certificate),又称公开密钥证书、公钥证书、数字证书(digital certificate)、数字认证、身份证书(identity certificate)、电子证书或安全证书,是用于公开密钥基础建设的电子文件,用来证明公开密钥拥有者的身份。 此文件包含了公钥信息、拥有者身份信息(主体)、以及数字证书认证机构(发行者)对这份文件的数...
X509数字证书学习
mayue_web的博客
06-04 4198
X509证书概念、格式和应用
X509证书的签名算法(Signature Algorithm)
最新发布
展望、进击
04-17 1100
在数字通信和数据安全领域,X.509证书扮演着核心角色。其中,签名算法是保证证书可信性的关键因素。本文将详细介绍X.509证书中使用的签名算法,探索其如何为我们的数字身份和数据传输提供保护层。🛡️🌐
X509证书详解
weixin_43408952的博客
05-11 2万+
X509证书全面解读
X.509标准简介--笔记
xk_initial的博客
07-18 1410
X.509标准简介 在和CA进行一些接触时,我们常常会听到一个名词: X.509。它是一种行业标准或者行业解决方案,在X.509方案中,默认的加密体制是公钥密码体制。为进行身份认证,X.509标准及公共密钥加密系统提供了数字签名的方案。用户可生成一段信息及其摘要(亦称作信息"指纹")。用户用专用密钥对摘要加密以形成签名,接收者用发送者的公共密钥对签名解密,并将之与收到的信息"指纹"进行比较,以确定其真实性。 此问题的解决方案即X.509标准与公共密钥证书。本质上,证书由公共密钥加密钥拥有者的用户标识组成,整
java生成和解析证书.docx
03-17
X.509 是一种常用的数字证书格式,定义了证书的结构和内容。X.509 证书包含了公钥、所有者身份信息、颁发者身份信息、有效期限等信息。 CertificateUtil 类 CertificateUtil 类是一个工具类,提供了多种方法来生成...
PKCS7签名的ASN1格式
02-22
可使用此格式,通过ASN1C生成完整的PKCS7签名C语言代码,实现诸如SM2算法数字签名及验证。 注意,CertificateSerialNumber本来在PKCS7标准ASN1结构中定义为INTEGER类型,但由于ASN1C将INTEGER类型翻译成long,不支持...
Java核心技术II(第8版)
02-10
9.5.3 X.509证书格式 9.5.4 校验签名 9.5.5 认证问题 9.5.6 证书签名 9.5.7 证书请求 9.6 代码签名 9.6.1 JAR文件签名 9.6.2 软件开发者证书 9.7 加密 9.7.1 对称密码 9.7.2 密钥生成 9.7.3 密码流 9.7.4 公共密钥...
JAVA上百实例源码以及开源项目
01-03
 数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录  一个Java+ajax写...
x509证书规范
03-01
This specification is one part of a family of standards for the X.509 Public Key Infrastructure (PKI) for the Internet. This specification profiles the format and semantics of certificates and certificate revocation lists (CRLs) for the Internet PKI. Procedures are described for processing of certification paths in the Internet environment. Finally, ASN.1 modules are provided in the appendices for all data structures defined or referenced.
X509证书结构解析
热门推荐
suata
12-19 3万+
一、 X.509证书结构 x.509标准规定了证书可以包含什么信息,并说明了记录信息的方法。 X.509结构中包括版本号(integer)、序列号(integer)、签名算法(object)、颁布者(set)、有效期(utc_time)、主体(set)、主体公钥(bit_string)、主体公钥算法(object)、签名值(bit_string)。 使用ASN.1描述,我们可以将其抽象为以下...
数字证书结构
ssdlleave的专栏
09-09 7182
数字证书结构
数字证书结构描述+解析的C程序设计和实现
Runner1st的博客
03-02 2516
文章目录1 X.509 证书结构描述1.1 整体结构1.2 证书内容1.3 编码2 源代码3 编译运行结果 1 X.509 证书结构描述 1.1 整体结构 证书内容、签名算法、签名结果。 tbsCertificate TBSCertificate signatureAlgorithm AlgorithmIdentifier signatureValue BIT STRING ...
x.509协议
wnjok的专栏
11-06 276
  X.509证书 ASN.1抽象语法标记(Abstract Syntax Notation One) ASN.1是一种 ISO/ITU-T 标准,描述了一种对数据进行表示、编码、传输和解码的数据格式。 ASN.1 都可以发送各种形式的信息(声频、视频、数据等等),独立于计算机架构和语言的方式来描述数据结构。 ISO中的应用层协议使用了 ASN.1 来描述它们所传输的 PDU,包...
X.509
jizhiguo的专栏
01-03 2617
X.509   编译:嵇志国 时间:2011.7.15   在密码学当中,X.509是SSO(单点登录,Single Sign-on)和PMI(授权管理基础设施,Privilege ManagementInfrastructure)的PKI(公钥基础设施,Public Key Infrastructure)标准。X.509描述了公钥证书、CRL(证书吊销列表)、属性证书、证书路径验证算法
X.509证书编码及解析
一切有为法,如梦亦如幻,如露亦如电,应作如是观。
03-23 980
1. 证书的整体结构 证书内容、签名算法、签名结果 用ASN.1语法描述如下: Certificate::=SEQUENCE{ tbsCertificate TBSCertificate, signatureAlgorithm AlgorithmIdentifier, signatureValue BIT STRING } 其中,签名算法为CA对tbsCertificate进行签名所使用的算法;类型为AlgorithmIdentifier,其ASN
X.509公钥证书
Mono的博客
09-14 2687
X.509是# 公钥证书的格式标准, 广泛用于TLS/SSL安全通信或者其他需要认证的环境中。X.509证书可以由# CA颁发,也可以自签名产生。 1 Overview X.509证书中主要含有公钥、身份信息、签名信息和有效性信息等信息。这些信息用于构建一个验证公钥的体系,用来保证客户端得到的公钥正是它期望的公钥公钥: 非对称密码中的公钥公钥证书的目的就是为了在互联网上分发公钥。 身份信息: 公钥对应的私钥持有者的信息,域名以及用途等。 签名信息: 对公钥进行签名的信息,提供公钥...
JDK 解析 X.509证书和CRL 示例代码
06-07
下面是一个简单的 Java 代码示例,用于解析 X.509 证书和 CRL: ```java import java.io.FileInputStream; import java.security.cert.CRL; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; public class X509CertParser { public static void main(String[] args) throws Exception { // 读取 X.509 证书 FileInputStream certFile = new FileInputStream("certfile.cer"); CertificateFactory cf = CertificateFactory.getInstance("X.509"); X509Certificate cert = (X509Certificate) cf.generateCertificate(certFile); certFile.close(); // 读取 X.509 CRL FileInputStream crlFile = new FileInputStream("crlfile.crl"); CRL crl = cf.generateCRL(crlFile); crlFile.close(); // 获取证书和 CRL 的信息 System.out.println("Certificate Issuer: " + cert.getIssuerDN()); System.out.println("Certificate Subject: " + cert.getSubjectDN()); System.out.println("CRL Issuer: " + crl.getIssuerDN()); } } ``` 在上面的示例代码中,我们使用 `CertificateFactory` 类的 `getInstance` 方法来获取一个 X.509 证书工厂。然后,我们使用 `generateCertificate` 方法来从文件中读取 X.509 证书并将其转换为 `X509Certificate` 对象。同样,我们使用 `generateCRL` 方法来读取 CRL 文件并将其转换为 `CRL` 对象。最后,我们可以使用 `getIssuerDN` 和 `getSubjectDN` 方法来获取证书的颁发者和主题信息,以及 `getIssuerDN` 方法来获取 CRL 的颁发者信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Linux grep基本用法与正则表达式 83500
  • u32、u16、u8 数据类型 50956
  • X.509数字证书的结构与解析 48951
  • dlopen Linux 动态库失败原因与解决办法总结 42469
  • TCP 握手和挥手图解(有限状态机) 30693

分类专栏

  • 可信计算 13篇
  • TEE 18篇
  • C/C++ 33篇
  • Linux 设备驱动开发 53篇
  • 安全标准解读 5篇
  • Linux 43篇
  • 数据结构和算法 30篇
  • 操作系统 23篇
  • 网卡驱动 24篇
  • 其它 19篇
  • Leetcode 83篇
  • 脚本语言 9篇
  • ARM 20篇
  • 密码学 6篇

最新评论

  • Linux内核学习笔记 - RCU机制总结

    sun_abcd: 由此可见写者在update之后是需要睡眠等待的,需要等待读者完成操作,如果在这个时刻读者被抢占或者睡眠,那么很可能会导致系统死锁。因为此时写者在等待读者,读者被抢占或者睡眠,如果正在运行的线程需要访问读者和写者已经占用的资源,那么死锁的条件就很有可能形成了。 这里读者虽然被抢占了,抢占的线程阻塞后,内核会调度读者的吧? 为什么会死锁呢?

  • Linux内核学习笔记 - RCU机制总结

    sun_abcd: 您好,请教一下,只有 rcu_st_read() 函数中添加 smp_read_barrier_depends() 可以解决乱序的问题吗? 有点没想明白。读侧本身应该就是存在依赖的,只在写侧加屏障就可以了吧?

  • TEE系列之TTBR 安全启动设计文档 浅析

    ahu_edu: 应该是翻译软件直接翻的内容,有些解释真的。

  • Armv8-R系列之ARM Cortex-R52 由来

    狂奔的乌龟: 这个不像是stm那样有自己的IDE环境。直接下载相关arm gcc交叉编译链或者llvm编译就可以了,整个编译和链接要单独写。

  • Armv8-R系列之ARM Cortex-R52 由来

    花花圆圆: 博主有基于这个R52核的工程模板吗?eclipse环境下的

大家在看

  • LeetCode 338.比特位计数
  • LeetCode 230.二叉搜索树中第K小的元素 690
  • 【产品经理修炼之道】- 5个新手引导设计原则让你的产品不一样
  • 15步解锁C# MonoGame:从0到游戏大师的进阶之旅
  • Kivy 未在目录中检测到文件

最新文章

  • Linux内核学习笔记——ACPI命名空间
  • LLVM代码空间优化(二)去除不使用函数
  • LLVM代码空间优化(一) 编译器自带的优化选项
2023年9篇
2022年48篇
2021年17篇
2019年1篇
2016年32篇
2015年245篇

目录

目录

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂奔的乌龟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

两个鬼故事杨光的新生活演员表怎么起公司名字魔兽冰封王座3下载口碑网成都免费起名缺火的名字开泡脚店起名桃花源记翻译姓雷起名字男孩中国教育电视台一套直播在线观看姓史的男孩起什么名字好梦见穿高跟鞋杨免费起名字特朗普弹劾案饭店店铺怎么起名姓名雷的起什么名字姓氏三才五格起名起名法百变小樱国语版全集策划书李木子个人资料起名字谢氏男生女陕西卫视进出口贸易公司起名仙境传说奥德赛攻略电影公社励志小故事任重道远是什么意思沈阳卫生局浴血坚持母婴店起名大全集三个字招商银行专业版少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化