RSA加解密&RSA加验签

开发语言与私钥证书的关系如下:


开发语言

私钥格式

证书格式

JAVA

.key.p8

.crt

PHP

.key.pem

.cert.pem

.NET

.key.der

.crt

其它

.key.pem

.cert.pem

我们是java语言,工程property配置:
#商户私钥 PKCS#8标准的私钥
90000002.mer.prikey.path=cert/90000002.key.p8
#平台公钥 X.509证书
plat.cert.path=cert/umpay.cert.crt

RSA加密/RSA解密

获取公钥和私钥

import com.umpay.core.util.ProFileUtil;

import java.io.ByteArrayInputStream;import java.security.KeyFactory;import java.security.PrivateKey;import java.security.PublicKey;import java.security.cert.CertificateFactory;import java.security.cert.X509Certificate;import java.security.spec.PKCS8EncodedKeySpec;import java.security.spec.X509EncodedKeySpec;
public static PublicKey getPublicKey() throws Exception {

    byte[] b = ProFileUtil.getFileByte("plat.cert.path");

    ByteArrayInputStream bais = new ByteArrayInputStream(b);    CertificateFactory cf = CertificateFactory.getInstance("X.509");    X509Certificate x509Certificate = (X509Certificate) cf.generateCertificate(bais);

    byte[] keyBytes = x509Certificate.getPublicKey().getEncoded();    X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);    KeyFactory keyFactory = KeyFactory.getInstance("RSA");    return keyFactory.generatePublic(x509KeySpec);}

public static PrivateKey getPrivateKey(String merId) throws Exception {    byte[] key = ProFileUtil.getFileByte(merId + ".mer.prikey.path");    PKCS8EncodedKeySpec e = new PKCS8EncodedKeySpec(key);    KeyFactory kf = KeyFactory.getInstance("RSA");    return kf.generatePrivate(e);}

RSA签名(加签/验签)

原文地址:https://www.cnblogs.com/buguge/p/11769740.html

时间: 2024-11-07 16:46:41

RSA加解密&RSA加验签的相关文章

Java实现RSA密钥对并在加解密、加签验签中应用的实例

一.项目结构 二.代码具体实现 1.密钥对生成的两种方式:一种生成公钥私文件,一种生成公钥私串 KeyPairGenUtil.java package com.wangjinxiang.genkey.util; import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.security.Key; import java.security.KeyPair; import java.security

.net core RSA 分段加密解密,签名验签(对接java)

参考地址: https://www.cnblogs.com/stulzq/p/7757915.html https://www.cnblogs.com/stulzq/p/8260873.html https://github.com/stulzq/RSAExtensions(XC.RSAUtil) https://www.cnblogs.com/stulzq/p/12053976.html https://github.com/stulzq/RSAExtensions (RSAExtension

非对称加密解密与签名验签的关系

首先看一下各自的定义: 加密:发送方利用接收方的公钥对要发送的明文进行加密. 解密:接受方利用自己的私钥进行解密. 签名:发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私人密钥对这个摘要进行加密,得到的就是这个报文对应的数字签名.通常来说,发送方会把数字签名和报文原文一并发送给接受者. 验签:接收方得到原始报文和数字签名后,用同一个哈希函数从报文中生成摘要A,另外,用发送方提供的公钥对数字签名进行解密,得到摘要B,对比A和B是否相同,就可以得知报文有没有被篡改过. 两者的目的不同,加

RSA 非对称加解密 公私钥的生成

加密和签名使用不同的密钥对,签名密钥对的私钥用于签名,其对应的公钥用于验证签名. 加密密钥对的公钥用于加密,其对应的私钥用于解密. 1.生成密钥对 /** * 生成RSA随机密钥对(公钥和私钥) * @return */ public static Map<String, String> createKeyPair() throws Exception { Map<String,String> keyPairMap = new HashMap<>(); // 密钥生成器

RSA加密、解密、加签、验签以及生成公私钥

RSA加解密.加验签.生成公私钥代码如下: package util; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.security.KeyFactory; import java.secu

Python中rsa模块【sign 加签验签】的使用

安装 pip install rsa 使用一 说明:简单入门使用  使用公钥加密  ----------->> 使用私钥进行解密 1 # -*- coding:utf-8 -*- 2 import rsa 3 4 5 def rsa_encrypt(d_str): 6 """ 7 生成私钥 和公钥 并接受字符串进行加密 8 :param d_str: 字符串 9 :return: 返回加密结果及私钥 10 """ 11 # 生成公钥和

C# 中使用 RSA加解密算法

一.什么是RSA RSA公开密钥密码体制.所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制. 在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的.加密算法E和解密算法D也都是公开的.虽然密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK.正是基于这种理论,1978年出现了著名的RSA算法,它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存:另一个为公开密钥

加解密总结(附助手类)

对称加密算法:DES.AES.IDEA.RC2.RC4.SKIPJACK……加解密使用相同密钥,这个是对称加密.对称加密优点是速度快 非对称加密算法:RSA.DSA.DH.ECC.EL GAMAL……公钥加密数据,然后私钥解密的情况被称为加密解密:因为公钥加密的数据只有它相对应的私钥可以解开,所以你可以把公钥给人和人,让他加密他想要传送给你的数据,这个数据只有到了有私钥的你这里,才可以解开成有用的数据,其他人就是得到了,也看懂内容实际应用中,一般都是和对方交换公钥,然后你要发给对方的数据,用他的

网络安全(2)-数据加解密

之前讲了身份认证,身份认证可以让我们确认收到的数据来自正确的发送者.但是传送的数据在经过中间节点的时候(或者在无线信道下并不需要经过中间节点,只要能够收到信号)可能会被偷听者收到,我们并不能阻止数据包被偷听者获取,因为数据包在在网线上或无线信道上传输,任何人都有可能通过信号接收设备获取传输的模拟信号,从而进一步解析得到以太网帧(或其他链路层协议帧).IP报文.UDP/TCP报文.应用层数据....     我们能做的就是让偷听者即使获取了我们传输的数据,也无法知道我们传的到底是什么,即对数据进行