在网上搜索到许多数字签名的流程以及代码,但是在自己实际项目中运用还存在一些疑问
在一个网站上看到如下说明
传送的信息进行数字加密和数字签名,其传送过程如下: (1) 甲准备好要传送的数字信息(明文)。 (2) 甲对数字信息进行哈希(hash)运算,得到一个信息摘要。 (3) 甲用自己的私钥(SK)对信息摘要进行加密得到甲的数字签名,并将其附在数字信息上。 (4) 甲随机产生一个加密密钥(DES密钥),并用此密钥对要发送的信息进行加密,形成密文。 (5) 甲用乙的公钥(PK)对刚才随机产生的加密密钥进行加密,将加密后的DES密钥连同密文一起传送给乙。 (6) 乙收到甲传送过来的密文和加过密的DES密钥,先用自己的私钥(SK)对加密的DES密钥进行解密,得到DES密钥。 (7) 乙然后用DES密钥对收到的密文进行解密,得到明文的数字信息,然后将DES密钥抛弃(即DES密钥作废)。 (8) 乙用甲的公钥(PK)对甲的数字签名进行解密,得到信息摘要。 (9) 乙用相同的hash算法对收到的明文再进行一次hash运算,得到一个新的信息摘要。 (10)乙将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。 每一个用户有一个各不相同的名字,一个可信的证书认证中心(CA)给每个用户分配一个唯一的名字并签发一个包含名字和用户公开密钥的证书。如果甲想和乙通信,他首先必须从数据库中取得乙的证书,然后对它进行验证。如果他们使用相同的CA,事情就很简单。甲只需验证乙证书上CA的签名;如果他们使用不同的CA,问题就复杂了。甲必须从CA的树形结构底部开始,从底层CA往上层CA查询,一直追踪到同一个CA为止,找出共同的信任CA。证书可以存储在网络中的数据库中。用户可以利用网络彼此交换证书。当证书撤销后,它将从证书目录中删除,然而签发此证书的CA仍保留此证书的副本,以备日后解决可能引起的纠纷。关于如何获得乙的证书这段话我始终没理解过来该如何去实际操作,比如我工程该是如何的架构,代码该怎么写使得甲能够获得乙的证书
上面有提到在数据库中取出乙的证书,我也没想明白证书是如何存到数据库的,存的是证书的什么东西,还有CA服务器需要参与这个过程么

解决方案 »

  1.   

    数字证书其实是外观类似于 U 盘的电子密钥,这样的产品就意味着存在通用的,或者厂家定制的API函数库文件。可以到这类专业厂家网站去下载API文档。因为你后台用什么技术也没说,给你找一份具体代码也不一定符合。而厂家网站的API文档,一般都是对多语言有针对说明和示例的。下面是微软数字证书操作API函数使用方法
    http://download.csdn.net/source/1761633
      

  2.   

    呵呵 这个我知道,关于证书操作部分我都大致了解了,还是上次那个问题没解决,您说用AJAX传HEX值的方法貌似不太能行得通,或许是我没理解透。有人说SSL通信第一次握手就可以互传证书,然后我在网上有找到SSL通信机制,不过跟我实际情况貌似有点出入,现在这个我截取来的说法倒是挺贴近我的实际,但是他说把证书从数据库中取出来不太理解,如果能够将证书存入数据库,取出来依然可以实现加密签名什么的我的问题也解决了