`

数字签名

阅读更多

数字签名,它是确定交换消息的通信方身份的第一个级别。上面A通过使用公钥加密数据后发给B,B利用私钥解密就得到了需要的数据,问题来了,由于都是使用公钥加密,那么如何检验是A发过来的消息呢?上面也提到了一点,私钥是唯一的,那么A就可以利用A自己的私钥进行加密,然后B再利用A的公钥来解密,就可以了;数字签名的原理就基于此,而通常为了证明发送数据的真实性,通过利用消息摘要获得简短的消息内容,然后再利用私钥进行加密散列数据和消息一起发送。java中为数字签名提供了良好的支持,java.security.Signature类提供了消息签名

 

package com.ijo.security;

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.Signature;
import java.security.SignatureException;

public class DigitalSignature2Example {

	public static void main(String[] args) throws Exception {
		byte[] plainText = "Hello china".getBytes("UTF8");
		// 形成RSA公钥对
		System.out.println("Start generating RSA key");
		KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
		keyGen.initialize(1024);
		KeyPair key = keyGen.generateKeyPair();
		System.out.println("Finish generating RSA key");
		// 使用私鈅签名
		Signature sig = Signature.getInstance("SHA1WithRSA");
		sig.initSign(key.getPrivate());
		sig.update(plainText);
		byte[] signature = sig.sign();
		System.out.println(sig.getProvider().getInfo());
		System.out.println("Signature:");
		System.out.println(new String(signature, "UTF8"));
		// 使用公鈅验证
		System.out.println("Start signature verification");
		sig.initVerify(key.getPublic());
		sig.update(plainText);
		try {
			if (sig.verify(signature)) {
				System.out.println("Signature verified");
			} else
				System.out.println("Signature failed");
		} catch (SignatureException e) {
			System.out.println("Signature failed");
		}
	}

}

 

分享到:
评论

相关推荐

    微软驱动数字签名失败解决补丁

    Windows无法验证文件数字签名而无法启动,无法验证此驱动的数字签名的网络上的解决方案一般都是下面几种: 第一种: 开机时按F8键,在弹出的菜单中有 禁用驱动程序签名强制 选项,使用上下键选中之后,再按回车键...

    数字签名 /C++/源代码

    以往的文件或书信可以通过亲笔签名来证明其真实性, 而通过计算机网络传输的信息则可以通过数字签名技术来实现其真实性的验证。 下面就以DSA算法为例,介绍数字签名算法。DSA算法在1991年被美国国家标准与技术局...

    数字签名-电子书1.P2P分布式数字签名系统2.取得数字签名和密码系统公开密钥的方法3数字签名原理及技术4.一种基于摘要口令加密私钥的数字签名模式

    "数字签名"是目前电子商务、电子政务中应用最普遍、技术最成熟的、可操作性最强的一种电子签名方法。它采用了规范化的程序和科学化的方法,用于鉴定签名人的身份以及对一项电子数据内容的认可。它还能验证出文件的...

    数字签名编程实现

    数字签名 c

    代码签名数字证书(含私钥)_过期证书_过期数字签名强制签名工具_数字签名_证书

    可强制签名已过期数字签名,这是成品exe,若容查杀没毒

    数字签名更改程序

    更改签名数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于...

    PowerShell 未经数字签名 系统将不执行该脚本

    您可能感兴趣的文章:Powershell 脚本数字签名实现方法史上最全的Android build.gradle配置教程springboot+gradle 构建多模块项目的步骤Gradle构建多模块项目的方法步骤Android studio gradle环境变量

    数字签名和数字证书

    用图文的方式对数字签名和数字证书之间的关系进行一个详细说明、希望大家看后恍然大悟。我目前正在用C#做证书和签名这块,但进展十分不畅,如果哪位朋友有好的方法或者示例,请私信联系

    winform实现数字签名实例

    C#实现的数字签名实例,非常好的一个例子 winform实现数字签名实例开发环境:VS2008 |

    C# 模拟数字签名过程

    数字签名过程: (1) 发方A用自己的私钥PVA,采用非对称RSA算法,将原文信息进行哈希(hash)运算,并对hash值进行加密,即得数字签名DS;(RSACryptoServiceProvider.SignData()) (3) 发方A用对称算法AES的...

    几种数字签名方案效率与安全性分析

    随着Internet的快速发展,让我们步入了一个网络全球化的新信息时代,在网上购物或是进行证券交易等商务活动备受青睐。...这样,作者能够通过数字签名证明自己身份,读者也可以通过数字签名查证作者身份。

    ,易语言软件的数字签名

    数字签名,给你坐的软件添加数字签名!减少杀毒软件的误报

    java实现数字签名

    Java实现数字签名(ChinaSEI) 版权所有 郭克华 讲解详细,有实例,并且均可以测试通过!

    电子商务中的数字签名技术

    数字签名是电子商务安全系统的 核心技术。RSA数字签名通过一个Hash 函数来实现。加入数字签名和验证的 文件传输过程,使得在电子商务中能 够验证数据的完整性,验证签名者的 身份和防止交易中的抵赖...

    win7 64位驱动程序数字签名补丁

    关于win7 64位 驱动程序数字签名的问题,昨天研究了一个下午,总结如下: 1、开机按F8,选择禁止驱动程序签名强制。 2、以管理员身份运行cmd,输入gpedit.msc,进入组策略,选择用户配置-管理模块-系统-驱动程序安装...

    数字签名工具6.1.7000(Visual Studio 2010 提取)

    从Visual Studio 2010 中提取的数字签名工具,可以用于个人证书制作或实现应用程序强名称,不可多得的最新版哦,应该是程序员们的最爱^^ ======================================================== 解压密码:...

    数字签名和加密的基本原理及其区别

    数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密,接收方用发送方的公开密钥进行解密,这是一个一对多的关系,任何拥有发送方公开密钥的人都可以验证数字签名的正确性。数字加密则使用的是接收方的...

    基于MD5+RSA的数字签名设计与实现(源码+文档)_RSA_数字签名.zip

    资源名字:基于MD5+RSA的数字签名设计与实现(源码+文档)_RSA_数字签名.zip 资源内容:项目全套源码+完整文档 源码说明: 全部项目源码都是经过测试校正后百分百成功运行。 适合场景:相关项目设计 项目详细介绍可...

    完美解决Win7驱动程序签名强制(Windows无法验证此设备所需的驱动程序的数字签名)

    解决win7 64位驱动程序签名强制问题,即在设备管理器,设备驱动呈现黄色感叹号,提示为Windows无法验证此设备所需的驱动程序的数字签名。。。(代码 52) 网上教程:重启按F8 选择禁用驱动程序签名强制,但每次重启...

    Virtual USB Multikey 带有数字签名Win10

    Virtual USB Multikey 带有数字签名,Win10不需要进入高级启动模式即可直接安装成功 安装方法如下: 1.右击桌面左下角WIndows徽标,选择“设备管理器” 2.“设备管理器”界面出现后稍等几秒,点击菜单栏“操作”...

Global site tag (gtag.js) - Google Analytics