• [field:title/]
  • [field:title/]

您现在的位置: > 行业杂谈 > 基于服务器当中数字签名技术实现

基于服务器当中数字签名技术实现

作者:木木 文章来源:原创  点击量: 发布日期:2017-05-25

  基于服务器当中数字签名技术实现

  数字签名服务器应用是非常广泛,数字签名服务器在保障电子商务、电子政务信息安全,提供公证、可信认证服务上发挥着重要作用。数字签名服务器对于新世界主机香港vps以及香港服务器而言,也是重要的组成部分。

  随着计算机通信网的发展,人们希望通过电子设备实现快速、远距离的交易,数字签名便应运而生,并开始用于商业通信系统以及军事通信系统等等,如电子邮递、电子转账和办公自动化等系统中。

  数字签名使用了公钥加密领域的技术实现。一套数字签名系统通常定义两种互补的运算:一种用于签名,另一种用于验证。例如,A使用一个签名算法(私有)为消息m签名,签名结果通过一个验证算法(公有)验证。给定数据对(m,y),验证算法根据签名是否有效返回给签名为"True"或"False"的回复。数字签名过程如图1所示。

基于服务器当中数字签名技术实现

  图1 数字签名过程

  基于公钥密码体制和私钥密码体制都可以获得数字签名,主要是基于公钥密码体制的数字签名。它包括普通数字签名和特殊数字签名,普通数字签名算法有RSA、ElGamal、DSS/ DSA、椭圆曲线数字签名算法等;特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等,它们都与具体的应用环境密切相关。

  数字签名的特性有一般具有以下特点:(1)鉴权,(2)完整性,(3)不可抵赖。

  数字签名满足基本要求:(1)收方能够确认或证实发方的签名,但不能伪造签名。(2)发方向收方发出签名的消息后,就不能再否认他所签发的消息,以保证他不能抵赖之前的交易行为。(3)收方对已收到的签名信息不能否认,即有收报认证。(4)第三者可以确认收发双方之间的信息传递,但不能伪造这一过程。

  数字签名的典型方案:RSA数字签名方案

  数字签名生成过程:数字签名系统是公开密钥加密技术与报文分解函数(MDF)相结合的产物,如图2所示:

基于服务器当中数字签名技术实现

  图2 数字签名的生成过程

  数字签名验证过程:对数字签名结果进行鉴定,如图3所示:

基于服务器当中数字签名技术实现

  图3 数字签名的验证过程

  RSA算法中数字签名技术实际上是通过一个Hash函数(MD5)来实现的。数字签名的特点是它代表了文件的特征,文件如果发生改变,数字签名的值也将发生变化。不同的文件将得到不同的数字签名。一个最简单的Hash函数是把文件的二进制码相累加,取最后的若干位。Hash函数对发送数据的双方都是公开的。

  RSA数字签名方案具体实现

  (1)用私钥生成数字签名

  public static string sign(byte[] data,string privatekey) throws Exeception{

  Byte[] keyBytes=decryptBASE64(privatekey);//由base64编码的私钥解密

  PKCS8EncodedKeySpec pkcs8keyspec=new PKCS8EncodedKeySpec(keyBytes);

  //构造PKCS8EncodedKeySpec对象

  keyFactory pricey=keyFactory.getInstance(KEY_ALGORITHM);//指定加密算法

  privatekey pricey=keyFactory.generatePrivate(pkcs8keyspec);//取私钥

  //用私钥对信息生成数字签名

  Signature signature=Signature.getInstance(SIGNATURE_ALGORITHM);

  Signature.initSign(pricey);

  Signature.update(data);

  return encryptBASE64(signature.sign());

  }

  (2)验证数字签名:

  public static boolean verify(byte[] data,string publickey,string sign)

  throws Exception{

  byte[] keyBytes=decryptBAES64(publickey);//由base64编码的公钥解密

  EncodedKeySpec keySpec=new EncodedKeySpec(keyBytes);

  //构造EncodedKeySpec对象

  keyFactory keyFactory=keyFactory.getInstance(KEY_ALGORITHM);//指定加密算法

  Publickey pubkey=keyfactory.generatePublic(keySpec);//取公钥对象

  Signature signature=Signature.getInstance(SIGNATURE_ALGORITHM);

  Signature.initVerify(pubkey);

  Signature.update(data);

  return signature.verify(decryptBASE64(sign));//验证签名是否正常

  }

  基于服务器当中数字签名技术实现已经给大家讲清楚了。如果您还有什么不明确或不懂的地方,欢迎咨询新世界主机了解,详细请咨询QQ: ,TEL: ;我们将竭诚为您服务。

本文地址: http://xgvps.com/xingyezatan/441.htm
版权所有*转载时必须以链接形式注明作者和原始出处

网站首页|关于我们|诚聘英才|合作伙伴|法律申明|诚招代理|联系我们|网站xml地图

Copyright © 2001-2020 香港vps 网址:http://xgvps.com/

香港vps、香港服务器、香港vps主机、香港vps哪里好、就到香港新世界vps主机。

信息来源于网络以及网友投稿,如侵犯了您的权益,请及时通知本站。 

收缩
p