`
xwhoyeah
  • 浏览: 91561 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

签名,验证签名

阅读更多
对数据使用私钥进行签名。
然后使用公钥验证签名。

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

public class Sign {
	private static String digits = "0123456789abcdef";

	/**
	 * @param args
	 * @throws NoSuchAlgorithmException
	 * @throws SignatureException
	 * @throws InvalidKeyException
	 */
	public static void main(String[] args) throws NoSuchAlgorithmException,
			SignatureException, InvalidKeyException {
		String alg = "RSA";
		KeyPairGenerator kpg = KeyPairGenerator.getInstance(alg);
		KeyPair kp = kpg.generateKeyPair();

		byte[] data = "abc123".getBytes();
		System.out.println("Data:" + toHex(data));

		// sign
		Signature sig1 = Signature.getInstance("NONEwithRSA");
		sig1.initSign(kp.getPrivate());
		sig1.update(data);
		byte[] siged = sig1.sign();
		System.out.println("Signed data:" + toHex(siged));

		// verify
		Signature sig2 = Signature.getInstance("NONEwithRSA");
		sig2.initVerify(kp.getPublic());
		sig2.update(data);
		System.out.println("result:" + sig2.verify(siged));
	}

	public static String toHex(byte[] data) {
		StringBuffer buf = new StringBuffer();

		for (int i = 0; i != data.length; i++) {
			int v = data[i] & 0xff;

			buf.append(digits.charAt(v >> 4));
			buf.append(digits.charAt(v & 0xf));
		}

		return buf.toString();
	}
}
分享到:
评论

相关推荐

    Python-Api签名验证样例

    在API(应用程序编程接口)开发中,为了确保数据的安全传输,通常会采用签名验证机制。本文将详细探讨Python中API签名验证的相关知识点,以"Python-Api签名验证样例"为例,结合`flask-apiSign-demo-master`这个...

    API接签名验证

    签名验证机制就是为了防止这些情况发生。 签名验证的基本原理是:客户端在发送请求时,会附带一个由特定算法计算出的签名,这个签名包含了请求的某些关键信息(如方法、URL、参数、时间戳等)。服务端接收到请求后...

    C#RSA加密解密签名和验证签名的小例子

    C#RSA加密解密签名和验证签名的小例子,代码都加了注释,可以很容易看懂.如果应用到消息收发,发送方用公钥加密,接收方用私钥解密.如果是应用到软件注册方面,则需要客户端保留公钥,程序开发者保留私钥.使用签名和验证...

    WebApi 使用TOKEN+签名验证

    "WebApi使用TOKEN+签名验证"是一种常见的安全策略,它结合了令牌(Token)验证和签名机制,以确保只有授权的客户端能够访问服务。下面将详细介绍这两种方法及其在实际应用中的实现。 1. **令牌(Token)验证**: ...

    Android so文件签名验证源代码

    本文将基于给定的"Android so文件签名验证源代码"主题,详细阐述Android SO文件的签名过程、NDK(Native Development Kit)的使用以及签名验证的重要性。 首先,了解Android应用签名机制是理解SO文件签名验证的基础...

    解决安装vs2017时报错:安装程序清单签名验证失败

    在安装Visual Studio 2017 (vs2017)的过程中,用户可能会遇到一个名为“安装程序清单签名验证失败”的错误。这个错误通常表明系统在验证安装包的数字签名时遇到了问题,导致安装无法正常进行。数字签名是确保软件...

    国密签名和验证签名的例子

    在这个"国密签名和验证签名的例子"中,我们将探讨如何使用SM2算法进行数字签名和验证。数字签名在网络安全中起着至关重要的作用,它不仅能够确保数据的完整性和来源的真实性,还能防止数据被篡改。SM2算法的优势在于...

    数字签名验证源码

    本资源提供的"数字签名验证源码"是针对Windows平台的一个实用工具,允许用户通过简单地将待验证的文件拖放到程序图标上来检查该文件的数字签名。 首先,我们需要理解数字签名的概念。数字签名并非字面上的物理签名...

    RSA加密解密与签名验证

    RSA加密解密与签名验证是信息安全领域中的重要技术,它基于数论原理,尤其是大整数因子分解的困难性。RSA是由Ron Rivest、Adi Shamir和Leonard Adleman三位科学家在1977年提出的,因此得名RSA。这种公钥密码体制在...

    一键去除签名验证的软件.apk

    一键去除签名验证的软件.apk,安卓用的

    永久启动和禁用win10驱动签名验证脚本

    在Windows 10操作系统中,驱动程序签名验证是一项安全特性,旨在确保安装的硬件驱动程序来自可信赖的源,并已通过Microsoft的数字签名验证。驱动签名验证有助于防止恶意软件利用未经验证的驱动程序进行攻击。然而,...

    BJCA 数字签名验证服务器白皮书201103.pdf

    BJCA 数字签名验证服务器白皮书 BJCA 数字签名验证服务器白皮书是数字证书认证中心发布的一份技术说明书,旨在介绍数字签名验证服务器(DSVS)的技术细节和应用场景。该白皮书详细介绍了 DSVS 的产品架构、产品功能...

    基于openssl的RSA的加密,解密,签名和验证签名

    基于OpenSSL库实现RSA的加密、解密、签名和验证签名是常见的实践方法。OpenSSL是一个强大的安全套接层(SSL/TLS)和通用加密库,提供了包括RSA在内的多种加密算法。 1. **RSA加密**:RSA加密过程基于两个大素数的...

    rsa.rar_RSA数字签名_RSA签名_RSA签名验证_rsa 签名_签名验证C++

    本文将详细探讨RSA数字签名、RSA签名验证及其在C++中的实现。 **RSA数字签名** RSA数字签名是RSA算法的一个重要应用,它提供了一种方法来验证数据的完整性和发送者的身份。数字签名的工作原理类似于现实世界的物理...

    解决vs2017 离线安装中出现 “程序包清单签名验证失败”的问题(证书文件下载)

    通过下载的证书文件,可以完美解决vs2017 离线安装中出现 “程序包清单签名验证失败”的问题

    验证文件的微软数字签名源码

    5. **检查时间戳**:若签名带有时间戳,系统还会验证签名在有效期内,确保即使证书已过期,只要在时间戳内,签名仍然有效。 在VC6.0环境下实现这个过程,你需要包含必要的Windows API,如WinTrust和Crypt32库,用以...

    API接口对接生成签名与验证签名

    ### API接口对接生成签名与验证签名 #### 一、生成签名机制 在API接口对接过程中,为了确保数据的安全性和防止数据被篡改,通常会采用生成签名的方式来进行数据的校验。下面详细介绍如何生成签名: 1. **参数排序...

    RSA.rar_RSA 签名验证_RSA签名_RSA签名验证

    这个“RSA.rar”压缩包可能包含了一个关于RSA签名验证的示例代码,具体是通过“RSA.cpp”文件来实现的。 RSA的核心在于其公钥和私钥的使用。公钥是可以公开的,任何人都可以用它来加密信息;而私钥则是保密的,只有...

    java简单实现验证签名.zip

    在Java编程环境中,签名验证是安全领域中的一个重要概念,它涉及到数据完整性和来源验证。这里的"java简单实现验证签名"项目可能是指通过Java语言来实现一个简单的数字签名验证过程。数字签名通常用于确保数据未被...

Global site tag (gtag.js) - Google Analytics