- 浏览: 1336409 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (471)
- 原创文章 (4)
- Database (84)
- J2SE (63)
- Web (26)
- Javascript (30)
- Lucene (11)
- os (13)
- 算法 (8)
- Webservice (1)
- Open projects (18)
- Hibernate (18)
- Spring (15)
- Css (2)
- J2ee (2)
- 综合技术 (18)
- 安全管理 (13)
- PatternsInJava (27)
- NIO (5)
- Ibatis (2)
- 书籍收藏 (1)
- quartz (7)
- 并发编程 (15)
- oracle问题 (2)
- ios (60)
- coco2d-iphone (3)
- C++ (6)
- Zookeeper (2)
- golang (4)
- animation (2)
- android (1)
最新评论
-
dandingge123:
【引用】限制UITextField输入长度的方法 -
qja:
...
对List顺序,逆序,随机排列实例代码 -
安静听歌:
现在在搞这个,,,,,哎~头都大了,,,又freemarker ...
通用大型网站页面静态化解决方案(一) -
springdata-jpa:
java quartz定时任务demo教程源代码下载,地址:h ...
Quartz 配置参考 -
马清天:
[b][/b][list][*]引用[u][/u][/list ...
通用大型网站页面静态化解决方案(一)
DSA数字签名,非对称加密的另一种实现。
DSA
DSA-Digital Signature Algorithm 是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(DigitalSignature Standard)。简单的说,这是一种更高级的验证方式,用作数字签名。不单单只有公钥、私钥,还有数字签名。私钥加密生成数字签名,公钥验证数据及签名。如果数据和签名不匹配则认为验证失败!数字签名的作用就是校验数据在传输过程中不被修改。数字签名,是单向加密的升级!
1.
2.
通过java代码实现如下:
import java.security.Key; /** public static final String ALGORITHM = "DSA"; /** /** private static final String PUBLIC_KEY = "DSAPublicKey"; /** // 构造PKCS8EncodedKeySpec对象 // KEY_ALGORITHM 指定的加密算法 // 取私钥匙对象 // 用私钥对信息生成数字签名 return encryptBASE64(signature.sign()); /** // 解密由base64编码的公钥 // 构造X509EncodedKeySpec对象 // ALGORITHM 指定的加密算法 // 取公钥匙对象 Signature signature = Signature.getInstance(keyFactory.getAlgorithm()); // 验证签名是否正常 /** KeyPair keys = keygen.genKeyPair(); DSAPublicKey publicKey = (DSAPublicKey) keys.getPublic(); Map<String, Object> map = new HashMap<String, Object>(2); return map; /** /** return encryptBASE64(key.getEncoded()); /** return encryptBASE64(key.getEncoded()); |
再给出一个测试类:
import static org.junit.Assert.*; import java.util.Map; import org.junit.Test; /** @Test // 构建密钥 // 获得密钥 System.err.println("公钥:\r" + publicKey); // 产生签名 // 验证签名 } } |
公钥: 私钥: 签名: 状态: |
发表评论
-
安全加解密介绍
2010-11-25 23:23 1088http://java.chinaitlab.com/List ... -
安全网络通信——SSL.
2010-11-25 23:19 1352我们需要构建一个由CA机构签发的有效证书,这里我们使用上文 ... -
Java证书体系的实现
2010-11-25 23:17 3358预先了解RSA加密算法。 ... -
数字证书
2010-11-25 23:10 1520数字证书。 还有 ... -
数字签名
2010-11-25 23:02 1709数字签名,它是确定交换消息的通信方身份的第一个级别。上面A通过 ... -
公钥加密
2010-11-25 22:52 1261私钥加密需要一个共享的密钥,那么如何传递密钥呢?web环境下, ... -
私钥加密
2010-11-25 22:43 1572消息摘要只能检查消息的完整性,但是单向的,对明文消息并不能加密 ... -
JAVA上加密算法的实现用例
2010-10-26 20:46 1354核心提示:通常,使用的加密算法 比较简便高效,密钥简短,加 ... -
BASE64加密
2010-10-26 20:42 1948如基本的单向加密算法: ● BASE64 严格地 ... -
Java加密技术之RSA
2010-10-26 20:40 1396核心提示:RSA 这种算法1978年就出现了,它是第一个既 ... -
Java 加密技术(二)
2010-10-14 16:11 1382接下来我们介绍对称加密算法,最常用的莫过于DES数据加密 ... -
Java 加密技术(一)
2010-10-14 16:09 1863加密解密,曾经是我一个毕业设计的重要组件。在工作了多年以后 ...
相关推荐
总的来说,DSA数字签名算法是网络安全和信息安全的关键组成部分,它通过数学原理确保了数据的完整性和非否认性。理解和掌握DSA的实现与验证方法对于任何从事安全相关工作的IT专业人员来说都是至关重要的。
DSA数字签 DSA数字签DSA数字签名 DSA数字签名
在电子通信和互联网交易中,DSA数字签名被广泛用于确保数据的完整性和发送者的身份验证。 DSA的核心原理是利用非对称加密技术,即每个用户有一对密钥,一个是私钥,仅由用户自己保管,用于签名;另一个是公钥,可以...
在提供的压缩包文件中,"DSA数字签名"可能包含了实现这些功能的源代码,这将帮助开发者理解DSA算法的实现细节,学习如何在C语言环境下实现数字签名。这些源代码可能包括了DSA算法的实现函数,如计算签名、验证签名的...
DSA数字签名广泛应用于电子商务、网络安全、软件授权、文件完整性校验等领域,如HTTPS协议中的SSL/TLS证书、Git版本控制系统的提交验证等。 总的来说,`DSA.zip`文件提供的`DSA.CPP`源代码可能是一个实用的工具,...
总结起来,DSA数字签名在Java中的实现涉及了密钥对生成、签名生成与验证等步骤,这些步骤都是通过`java.security`包中的类和方法完成的。了解并掌握这些知识点,对于开发安全的网络应用程序至关重要。同时,通过阅读...
总结,DSA数字签名算法是现代网络安全的重要组成部分,结合MD5或SHA-1等哈希函数,为数据提供了可靠的完整性保护和身份验证。在C语言环境中实现DSA签名,不仅需要理解算法原理,还需要熟悉文件操作和可能涉及的加密...
《深入理解DSA数字签名:C语言实现与SHA哈希算法》 数字签名是现代密码学中的重要组成部分,它在确保信息安全传输、防止篡改和伪造等方面发挥着关键作用。DSA(Digital Signature Algorithm)是由美国国家标准和...
我不知道是这个DSA算法本身有问题还是什么.验证签名这块也有问题
DSA数字签名算法 DSA(Digital Signature Algorithm,数字签名算法)是一种公开密钥算法,用作数字签名标准的一部分。它不能用作加密,只用作数字签名。DSA 使用公开密钥,为接受者验证数据的完整性和数据发送者的...
DSA数字签名算法 DSA数字签名算法是数字签名标准的一部分,它使用公开密钥算法,不能用作加密,只用作数字签名。DSA算法的安全性基于解离散对数的困难性,这类签字标准具有较大的兼容性和适用性,成为网络安全体系...
学习DSA数字签名不仅有助于理解公钥密码学的基本原理,而且对于开发涉及安全通信的应用程序至关重要。通过阅读和分析提供的源代码,可以加深对这个过程的理解,同时提高编程技能。在实际项目中,还可以结合其他安全...
DSA 数字签名算法 数字签名是数据在公开行信道中传输的安全保障,能够实现数据的公开、公正、不可抵赖等特点的方法。DSA(Digital Signature Algorithm)是 Schnorr 和 ElGamal 算法的变种,被美国国家标准技术研究...
DSA数字签名的使用确保了消息的完整性和发送者的身份认证,广泛应用于电子商务、电子合同、软件授权等领域。由于其安全性基于计算离散对数的难度,随着计算能力的提升,可能会出现安全性挑战,因此NIST后来增加了...
在C++中实现DSA数字签名涉及到以下几个关键步骤: 1. **密钥生成**:DSA需要一对密钥,包括一个私钥和一个公钥。私钥用于签名,公钥用于验证。首先选择两个大素数p和q,计算它们的乘积n=p*q,并找到一个满足1 且gcd...
DSA(Digital Signature Algorithm)是一种基于离散对数问题的公钥密码学算法,常用于数字签名,以确保数据的完整性和发送者的身份。在C#中实现DSA签名算法,主要涉及以下几个关键步骤和知识点: 1. **密钥生成**:...
在IT领域,尤其是在网络安全和密码学中,RSA和DSA(Digital Signature Algorithm)是两种重要的公钥加密算法,常用于数字签名。数字签名是确保数据完整性和发送者身份验证的关键技术,而C++作为一门强大的系统级编程...