RSA 数字签名算法(Java版)

数字签名算法Java版 还是上代码吧

        public static final String  SIGN_ALGORITHMS = "SHA1WithRSA";

	 /**
	   * RSA签名
	   * @param content 待签名数据
	   * @param privateKey 私钥
	   * @param input_charset 编码格式
	   * @return 签名值
	   */
	   public static String sign(String content, String privateKey, String input_charset)
	   {
	        try
	        {
	           byte[] decode =Base64.getDecoder().decode(privateKey);
	           PKCS8EncodedKeySpec priPKCS8   = new PKCS8EncodedKeySpec(decode);
	           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(input_charset) );
	           byte[] signed = signature.sign();
	           return Base64.getEncoder().encodeToString(signed);
	        }
	        catch (Exception e)
	        {
	           e.printStackTrace();
	        }

	        return null;
	    }

  

调用方式:

  String sign = sign(”content”,”privateKey”,"utf-8");

Over,Tks.

原文地址:https://www.cnblogs.com/localhost2016/p/8758715.html

时间: 2024-08-11 05:45:50

RSA 数字签名算法(Java版)的相关文章

简单的猜数字(JAVA版)

按书上的样例来操作的. 不过,书上提到的BUG,我没有在看下一章时就解决了哈.. 从网上查找的删除数组元素的方法. 其实,将数据结构更改为ARRAYLIST,可能更简单.:) GameHelper.java import java.io.*; public class GameHelper { public String GetUserInput(String prompt) { String inputLine = null; System.out.println(prompt + " &qu

剑指offer第二版面试题11:旋转数组的最小数字(JAVA版)

题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1. 解题思路: 1.暴力解法,从头到尾遍历一次,我们就能找出最小的元素,复杂度为O(n),但是没有利用输入的旋转数组的特性,肯定达不到面试官的要求. 2.二分查找,这里的数组可以看成两个有序的子数组,二分查找对有序数组非常有效,复杂度为O(logn). 具体分析: 1.先分析数组的特点

ECDSA数字签名算法

一.ECDSA概述 椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线密码(ECC)对数字签名算法(DSA)的模拟.ECDSA于1999年成为ANSI标准,并于2000年成为IEEE和NIST标准.它在1998年既已为ISO所接受,并且包含它的其他一些标准亦在ISO的考虑之中.与普通的离散对数问题(discrete logarithm problem  DLP)和大数分解问题(integer factorization problem  IFP)不同,椭圆曲线离散对数问题(elliptic cur

Java数字签名算法--RSA

签名具有的特性: 安全性 抗否认性 数字签名:带有密钥(公钥.私钥)的消息摘要算法(使用私钥进行签名,使用公钥进行验证) 数字签名算法:RSA.DSA.ECDSA 数字签名特性: 验证数据完整性 认证数据来源 抗否认性 经典算法 MD.SHA两类 数字签名算法-RSA的执行过程 代码: package com.chengxuyuanzhilu.rsa; import java.security.InvalidKeyException; import java.security.KeyFactor

java/php/c#版rsa签名以及java验签实现

在开放平台领域,需要给isv提供sdk,签名是Sdk中需要提供的功能之一.由于isv使用的开发语言不是单一的,因此sdk需要提供多种语言的版本.譬如java.php.c#.另外,在电子商务尤其是支付领域,对安全性的要求比较高,所以会采用非对称密钥RSA 本文主要介绍如何基于java.php.c#在客户端使用rsa签名,然后在服务端使用Java验签. 基于openssl生成RSA公私钥对 a)从网上下载openssl工具:http://www.slproweb.com/products/Win32

剑指Offer面试题51(Java版):数组中重复的数字

题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复的次数.请找出数组中任意一个重复的数字. 例如如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3. 解决这个问题的一个简单的方法是先把输入的数组排序.从排序的数组中找出重复的数字是件容易的事情,只需要从头到尾扫描排序后的数组就可以了.排序一个长度为n的数组需要时间为O(nlogn)时间. 还可以利用哈希表来解决这个问题,从头到尾

剑指Offer面试题51(Java版):数组中反复的数字

题目:在一个长度为n的数组里的全部数字都在0到n-1的范围内. 数组中某些数字是反复的,但不知道有几个数字反复了.也不知道每一个数字反复的次数.请找出数组中随意一个反复的数字. 比如假设输入长度为7的数组{2,3,1,0,2,5,3},那么相应的输出是反复的数字2或者3. 解决问题的一个简单的方法是先把输入的数组排序.从排序的数组中找出反复的数字是件easy的事情,仅仅须要从头到尾扫描排序后的数组就能够了.排序一个长度为n的数组须要时间为O(nlogn)时间. 还能够利用哈希表来解决问题.从头到

微信公众号H5支付-JAVA版

微信开发之微信公众号H5支付-JAVA版 引子 从事JAVA开发一年多了,一直都在看博客园,CSDN的博客,从很多前人哪里学习了很多,突然觉得自己也要尽一份力,写点博客自己给自己做做记录,也给要开发微信人提提醒少遇点坑. 很多人开发微信的时候,总是在抱怨微信的开发文档很坑,里面的参数和使用方式很含糊,其实有时候自己想想,如果自己去研发API的时候,是否能够做的比微信更好呢?,大师都有一颗虔诚学徒的心,希望这篇文档能给予从事微信公众号H5支付焦头烂额的朋友,一点帮助. 一.前言 先给大家提提从事微

AKKA文档(java版)

目前我正在翻译AKKA官网文档.翻译:吴京润 译者注:本人正在翻译AKKA官网文档,本篇是文档第一章,欢迎有兴趣的同学加入一起翻译.更多内容请读这里:https://tower.im/projects/ac49db18a6a24ae4b340a5fa22d930dc/lists/ded96c34f7ce4a6bb8b5473f596e1008/show/https://tower.im/projects/ac49db18a6a24ae4b340a5fa22d930dc/todos/640e53d