您现在的位置: > 行业杂谈 > 基于服务器当中数字签名技术实现
基于服务器当中数字签名技术实现
数字签名服务器应用是非常广泛,数字签名服务器在保障电子商务、电子政务信息安全,提供公证、可信认证服务上发挥着重要作用。数字签名服务器对于新世界主机香港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
版权所有*转载时必须以链接形式注明作者和原始出处
Copyright © 2001-2020 香港vps 网址:http://xgvps.com/
香港vps、香港服务器、香港vps主机、香港vps哪里好、就到香港新世界vps主机。
信息来源于网络以及网友投稿,如侵犯了您的权益,请及时通知本站。