前言:最近接了一个支付平台,提供了.pfx私钥文件以及.cer公钥文件,对于不常用的加密技术的人来说一头雾水。

代码:

public static String sign(String pfxFile, String pfxPwd, String str, String signature, String coding) {

try {

//获取pfx文件的prikey

Security.addProvider(new BouncyCastleProvider());

KeyStore e = KeyStore.getInstance("PKCS12", "BC");

FileInputStream fis = new FileInputStream(pfxFile);

e.load(fis, pfxPwd.toCharArray());

Enumeration aliases = e.aliases();

String keyAlias = null;

PrivateKey priKey = null;

if (aliases != null) {

while (aliases.hasMoreElements()) {

keyAlias = (String) aliases.nextElement();

priKey = (PrivateKey) e.getKey(keyAlias, pfxPwd.toCharArray());

if (priKey != null) {

break;

}

}

}

//使用Signature加密

Signature signet = Signature.getInstance(signature);

signet.initSign(priKey);

signet.update(str.getBytes(coding));

byte[] signed = signet.sign();

String strSign = new String(Base64.encode(signed));

return strSign;

} catch (Exception ex) {

System.out.println(ex);

}

return null;

}

调用:

System.out.println(sign("C://xxx.pfx","123456","123","MD5withRSA","UTF-8"));

cer公钥代码:

//通过cer文件获取到publickey

String e ="c://xxx.cer";

logger.debug("公钥证书路径:" + e);

FileInputStream in = new FileInputStream(e);

CertificateFactory cf = CertificateFactory.getInstance("X.509");

Certificate cac = cf.generateCertificate(in);

PublicKey pubKey = cac.getPublicKey();

in.close();

//通过pubkey加密

Signature signetcheck = Signature.getInstance("MD5withRSA");

signetcheck.initVerify(pubKey);

signetcheck.update(Base64.decode(msg));

//验证是否一样

if (!signetcheck.verify(Base64.decode(check))) {

throw new  异常("Verify Signature Error");

}

java pfx加密_.pfx证书 .cer证书MD5withRSA加密相关推荐

  1. 配置加密_数据库密码配置项都不加密?心也太大了!

    先看一份典型的配置文件 ... 省略 ... ## 配置MySQL数据库连接spring.datasource.driver-class-name=com.mysql.jdbc.Driversprin ...

  2. mysql5.7.16 表空间加密_技术分享 | InnoDB 表空间加密

    本文目录: 一.表空间加密概述 应⽤场景 加密插件 加密限制 注意事项 二.加密表空间 安装加密插件 配置表空间加密 查看表空间被加密的表 三.更新 master encryption key 四.导 ...

  3. java调用微信加密_微信登录授权, 并且解密加密内容获取手机号和地区

    所使用的的依赖 org.springframework.boot spring-boot-starter-web 2.3.7.RELEASE org.apache.httpcomponents htt ...

  4. java视频切片_使用ffmpeg视频切片并加密和视频AES-128加密后播放

    创建加密文件:将一个mp4视频文件切割为多个ts片段,并在切割过程中对每一个片段使用AES-128 加密,最后生成一个m3u8的视频索引文件: 1.加密用的key(文件则保存当前目录) 指令:open ...

  5. 数据存储加密和传输加密_将时间存储网络应用于加密预测

    数据存储加密和传输加密 I'm not going to string you along until the end, dear reader, and say "Didn't achie ...

  6. ubuntu取消主目录加密_如何在Ubuntu上恢复加密的主目录

    ubuntu取消主目录加密 Access an encrypted home directory when you're not logged in – say, from a live CD – a ...

  7. mysql实现内容加密_简单为mysql 实现透明加密方法

    一般用户在数据库中保存数据,虽然数据库存储的是二进制,无法直接明文打开查看,但是如果是一个外行人,直接连接进入mysql中,还是可以直接查看数据的. 所以对于一些核心数据,特别是企业重要数据资产,一般 ...

  8. js对本地文件进行加密_怎么对电脑文件进行加密

    怎么保护电脑文件安全 禁止修改计算机文件内容?如何保护计算机电脑文件的安全,防止电脑文件被意外修改呢?背景电脑中的重要文件,甚至是局域网共享的文件夹,我们有必要保护其电脑文件的完整性,防止被恶意修改, ...

  9. .pfx 证书和 .cer 证书

    证书系列: 1:.pfx 证书和 .cer 证书 2:导入pfx证书 通常情况下,作为文件形式存在的证书一般有三种格式: 第一种:带有私钥的证书,由Public Key Cryptography St ...

  10. C# 证书 .cer, .pfx 创建,加解密 导出为 Base64编码文件

    RSA加密解密:私钥解密,公钥加密. 使用的命名空间: using System.Security.Cryptography;   using System.Security.Cryptography ...

最新文章

  1. MySQL体系结构之物理文件
  2. Python Numpy介绍
  3. Bitmap转圆形图片Bitmap
  4. 白沙工业园新松机器人_常州中智永浩助推机器人行业高质发展 打造机器人领域新优势...
  5. 10.14 ssh:安全地远程登录主机
  6. Java黑皮书课后题第5章:5.13(求满足n的三次方<12000的n的最大值)使用while循环找出满足n的三次方<12000的n的最大值
  7. 这是对R的误解!R的应用原来这么广!
  8. hdu3666-THE MATRIX PROBLEM【差分约束,自然对数】
  9. ++实现 ipv6数据报_IPV6报文格式和IPV4有什么区别?
  10. 程序员伪装 AI 编程,竟骗来 2 亿的投资!
  11. 无限极分类php简单,创建无限极分类树型结构的简单方法
  12. 1432: 【蓝桥杯】:剪格子(迷宫问题变体)
  13. MBR、主引导扇区,主分区、扩展分区、逻辑分区,活动分区、引导分区、系统分区、启动分区的区别详解
  14. 使用VLC Media Player 在Mac上修剪视频
  15. android 转发朋友圈,微信怎么转发朋友圈 转发朋友圈方法详细教程
  16. 名人名言页面的效果图HTML,名人名言书签制作方法图片
  17. idea彩虹括号+区域代码高亮插件
  18. linux安全审计和加固工具-lynis
  19. python身份证号码共18位_18位身份证校验
  20. python redis连接_Python连接Redis连接配置

热门文章

  1. 壮族小伙车祸离世 父亲含泪捐儿器官救6人
  2. 7-5 jmu-Java-03面向对象基础-05-覆盖 (20 分)
  3. 温度传感器的一些比较
  4. 内存淘汰策略 删除策略
  5. 查看手机的mac地址
  6. git stash 暂存恢复和文件误删恢复
  7. 韦恩图——你学会了吗?
  8. SCI论文分区有两种方法
  9. Supermap Iserver 安装指南
  10. Python——自动签到脚本