引用自: http://blog.csdn.net/wangqiuyun/article/details/42143957/

java RSA 加签验签

package com.testdemo.core.service.impl.alipay;import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;/*** RSA签名验签类 http://blog.csdn.net/wangqiuyun/article/details/42143957/*/
public class RSASignature {/*** 签名算法*/public static final String SIGN_ALGORITHMS = "SHA1WithRSA";/*** RSA签名* * @param content*            待签名数据* @param privateKey*            商户私钥* @param encode*            字符集编码* @return 签名值*/public static String sign(String content, String privateKey, String encode) {try {PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(new BASE64Decoder().decodeBuffer(privateKey));KeyFactory keyf = KeyFactory.getInstance("RSA");PrivateKey priKey = keyf.generatePrivate(priPKCS8);java.security.Signature signature = java.security.Signature.getInstance(SIGN_ALGORITHMS);signature.initSign(priKey);signature.update(content.getBytes(encode));byte[] signed = signature.sign();return new BASE64Encoder().encode(signed);} catch (Exception e) {e.printStackTrace();}return null;}public static String sign(String content, String privateKey) {try {PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(new BASE64Decoder().decodeBuffer(privateKey));KeyFactory keyf = KeyFactory.getInstance("RSA");PrivateKey priKey = keyf.generatePrivate(priPKCS8);java.security.Signature signature = java.security.Signature.getInstance(SIGN_ALGORITHMS);signature.initSign(priKey);signature.update(content.getBytes());byte[] signed = signature.sign();return new BASE64Encoder().encode(signed);} catch (Exception e) {e.printStackTrace();}return null;}/*** RSA验签名检查* * @param content*            待签名数据* @param sign*            签名值* @param publicKey*            分配给开发商公钥* @param encode*            字符集编码* @return 布尔值*/public static boolean doCheck(String content, String sign, String publicKey, String encode) {try {KeyFactory keyFactory = KeyFactory.getInstance("RSA");byte[] encodedKey = new BASE64Decoder().decodeBuffer(publicKey);PublicKey pubKey = keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey));java.security.Signature signature = java.security.Signature.getInstance(SIGN_ALGORITHMS);signature.initVerify(pubKey);signature.update(content.getBytes(encode));boolean bverify = signature.verify(new BASE64Decoder().decodeBuffer(sign));return bverify;} catch (Exception e) {e.printStackTrace();}return false;}public static boolean doCheck(String content, String sign, String publicKey) {try {KeyFactory keyFactory = KeyFactory.getInstance("RSA");byte[] encodedKey = new BASE64Decoder().decodeBuffer(publicKey);PublicKey pubKey = keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey));java.security.Signature signature = java.security.Signature.getInstance(SIGN_ALGORITHMS);signature.initVerify(pubKey);signature.update(content.getBytes());boolean bverify = signature.verify(new BASE64Decoder().decodeBuffer(sign));return bverify;} catch (Exception e) {e.printStackTrace();}return false;}}

转载于:https://www.cnblogs.com/whatlonelytear/p/6739811.html

java RSA 加签验签【转】相关推荐

  1. Python | Python 实现RSA加解密 验签 无 长度限制 加密解密, 分段加密

    系列文章目录 Python | Flask 解决跨域问题 文章目录 系列文章目录 为什么要分段加密 代码示例 测试 测试结果 为什么要分段加密 加密的字段长短规则如下: 加密的 plaintext 最 ...

  2. RSA体系 c++/java相互进行加签验签--转

    在web开发中,采用RSA公钥密钥体系自制ukey,文件证书登陆时,普遍的做法为:在浏览器端采用c++ activex控件,使用 c++的第三库openssl进行RAS加签操作,在服务器端采用java ...

  3. java rsa加密 加签_RSA加密解密与加签验签

    RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.1987年7月首次在美国公布 ...

  4. 前后端RSA互相加解密、加签验签、密钥对生成(Java)

    目录 一.序言 二.关于PKCS#1和PKCS#8格式密钥 1.简介 2.区别 二.关于JSEncrypt 三.关于jsrsasign 四.前端RSA加解密.加验签示例 1.相关依赖 2.crypto ...

  5. php对接java验签,PHP教程:php对接java现实加签验签的实例

    <PHP教程:php对接java现实加签验签的实例>要点: 本文介绍了PHP教程:php对接java现实加签验签的实例,希望对您有用.如果有疑问,可以联系我们. PHP教程java生成的密 ...

  6. python rsa库_Python中rsa模块【sign 加签验签】的使用

    安装 pip install rsa 使用一 说明:简单入门使用  使用公钥加密  ----------->> 使用私钥进行解密 1 #-*- coding:utf-8 -*- 2 imp ...

  7. java支付宝rsa2签名,使用支付宝SDK进行RSAj加签验签以及加密解密

    /** * 支付宝 sdk 加签验签测试 * * @author 码农猿 */ public class SignDemo { /** * 公钥 */ private static final Str ...

  8. 聊一聊关于加解密、加签验签的那些事

    面对MD5.SHA.DES.AES.RSA等等这些名词你是否有很多问号?这些名词都是什么?还有什么公钥加密.私钥解密.私钥加签.公钥验签.这些都什么鬼?或许在你日常工作没有听说过这些名词,但是一旦你要 ...

  9. 速看: 加解密、加签验签,你想要的都在这了

    点击蓝色"java大数据修炼之道"关注我哟加个"星标",每晚21:00,一起学技术 来源: jianshu.com/p/5e9fe1fff6a3 作者: 不学无 ...

最新文章

  1. P1525 关押罪犯(扩展域并查集/二分图)
  2. 中国高校首个Apache开源项目 清华数为物联网时序数据库IoTDB 及可自由组装的大数据软件栈系列组件发布...
  3. SAP MM 销售订单库存与普通库存之间相互转换过账后对于EBEWH以及MBEWH表的更新...
  4. 如何认识TOS----DSCP 对照表
  5. 检测到在集成的托管管道模式下不适用的 ASP.NET 设置。
  6. Software Engineering 265
  7. easyui datagrid 表头与数据错位
  8. 哪种消息队列更好_如何编写更好的错误消息
  9. Replication的犄角旮旯(三)--聊聊@bitmap
  10. 太棒了!TCP/IP协议 (图解+秒懂+史上最全)
  11. 同义句转换在线翻译器的软件
  12. java(娄娄)的表白代码
  13. python+pygame Hopscotch小游戏
  14. Hibernate的Disjunction和Conjunction
  15. php fetch_assoc,PHP使用fetch_assoc()获取查询结果时数据类型都变了
  16. 北京大学MOOC 程序设计与算法(三)C++面向对象程序设计 期末考试
  17. HTML表格中实现自动换行
  18. 吐血整理一个月——终于把所有Python库整理齐了.....
  19. QList、QVector、QMap、QHash安全删除(指定删除、遍历删除、快速删除)
  20. strcmp和strncmp函数

热门文章

  1. python -- join()
  2. Android开发中调用系统窗口的方法
  3. Asp.Net基础 - 9.Web开发原则
  4. java 7 update 17_Java version 7, Update 17 is NOT recongnized by FireFox version 19.0.2
  5. C++ cin.sync()和cin.ignore()
  6. brainfu*k语言执行
  7. 地雷会炸到自己吗_回顾自己曾经的往事 ——记双语学习有感
  8. i7怎么老是显示无服务器,i7处理器真有这么差?网友:懂电脑的人都不买!
  9. agv系统介绍_重载AGV小车主要结构及导航原理是什么?
  10. cordova 实现网页缓存_如何解决ionic,cordova混合开发的app缓存大的问题