Java工具类-使用RSA验签

1 私钥签名

public static String signByKey(String content,String privateKey) {
   PKCS8EncodedKeySpec sp = new 
   PKCS8EncodedKeySpec(new BASE64Decoder().decodeBuffer(privateKey));
   KeyFactory keyFactory = KeyFactory.getInstance("RSA");
   PrivateKey key = keyFactory.generatePrivate(sp);
   return sign(content,key);      
}
private static String sign(String content,PrivateKey privateKey) {
    Signature dsa = Signature.getInstance("SHA1withRSA");
    dsa.initSign(privateKey);
    dsa.update(content.getBytes("UTF-8"));
    byte[] signature = dsa.sign();
    return new String(Base64.encodeBase64(signature));
}

2 公钥验签

public static boolean verifySignByKey(String content,String oldsign,String publicKey) {
    X509EncodedKeySpec sp = new X509EncodedKeySpec(new
BASE64Decoder().decodeBuffer(publicKey));
    KeyFactory keyFactory = KeyFactory.getInstance("RSA");
    PublicKey key = keyFactory.generatePublic(sp);
    return verifySign(content,oldsign,key);      
}
private static boolean verifySign(String content,String oldsign,PublicKey publicKey) {
    Signature signCheck = Signature.getInstance("SHA1withRSA");
    signCheck.initVerify(publicKey);
    signCheck.update(content.getBytes("UTF-8"));
    return signCheck.verify(Base64.decodeBase64(oldsign.getBytes()));
}

 

热门文章

暂无图片
编程学习 ·

php-fpm 服务

系统:centos 7版本:php-5.6.9安装目录:/Data/app/php/cd etc/mv php-fpm.conf.default php-fpm.confsbin/php-fpm 「 php-fpm 启动 & 无php-fpm.pid 」 ps -ef | grep php-fpmroot 23536 1 0 20:36 ? 00:00:00 php-fpm: master process (/Data/app/…
暂无图片
编程学习 ·

二、21【设计模式】之状态模式

今天的博客主题设计模式 ——》 设计模式之状态模式状态模式 SP (State Pattern)定义允许对象在内部状态发生改变时改变它的行为,看起来好像修改了它的类。类的行为是由状态决定的,不同的状态下该类有不同的行为。就是一个对象在其内部改变的时候,它的行为也随之改变。核心…
暂无图片
编程学习 ·

POJ练习题之:败方树

问题描述 给定一个整数数组,要求对数组中的元素构建败方树(数组相邻元素两两比较,从第一个元素开始)。之后修改数组中的元素,要求输出初始构建以及修改后得到的败方树的所有内部结点代表的整数(从左到右从上到下输出) 输入 第一行为数组的元素个数n和修改的次数m。 第二行…
暂无图片
编程学习 ·

Taro 3 正式版发布:开放式跨端跨框架解决方案

作者:凹凸曼 - yuche 从 Taro 第一个版本发布到现在,Taro 已经接受了来自于开源社区两年多的考验。今天我们很高兴地在党的生日发布 Taro 3(Taro Next)正式版,希望 Taro 未来的更多两年能像一名共产主义战士一样经受住更多的考验。以下是 Taro 3 的一些新增特性: 跨框架:…
暂无图片
编程学习 ·

线程

1.线程 1.什么叫做线程,跟进程之间的关系 进程:独立的cup空间运行 线程:进程中的一个执行流程,一个进程中可以包含多个线程,这些线程共享该进程提供的资源 2.创建线程(两种方式) 让这类继承Thread类 class XXX extends Thread{ public void run() Thread xx = new Threa…
暂无图片
编程学习 ·

GIS宣传片《地理空间信息革命》视频全集

《地理空间信息革命》第一集《地理空间信息革命》第一集:介绍了全球定位系统(GPS),地理空间信息系统(GIS)和数字测绘和地理空间技术的历史和应用。《地理空间信息革命》第二集《地理空间信息革命》第二集:本集探讨城市和企业如何利用地理空间技术。用了三个事例,讲述美…
暂无图片
编程学习 ·

APP免费渠道,运营者不可不知的基础常识

​随着移动终端的迅速普及,各类APP如雨后春笋般涌现出来,但是真正的运营成功的产品却寥寥无几。从瓜分渠道资源到抢占用户的过程中,很多同行都明显的感觉到,渠道平台所带来的量日益减少,但是刊例价格却一再攀升。就像圈内的朋友和我在聊天的提到的:“现在渠道的大腿真心越…
暂无图片
编程学习 ·

Shiro框架简单使用

文章目录1. Shiro过滤器&标签简介Shiro过滤器Shiro的JSP标签2. Shiro登陆认证(一)使用认证过滤器目标实现3. Shiro登陆认证(二)完成登录认证(*)目标总结4. Shiro登陆认证(三)凭证匹配器-普通加密需求步骤总结5. Shiro登陆认证(四)凭证匹配器-加盐加密需求什么是加…
暂无图片
编程学习 ·

啥是智慧社区-百度人脸识别

还记得前几年大家常说的看“脸”的时代吗?现如今回家必须得看脸了,人脸识别助力智慧社区管理升级,以前我们只能在电影里看到了,刷脸进出小区,刷脸开锁等在现实中已经实现了,那使用了人脸识别的智慧社区到底是个啥?下面AI人工智能带大家一探究竟。1、人工智能赋予美好生活…
暂无图片
编程学习 ·

今天开始看apue了

第一个问题是安装apue.h 1 源码 2 安装libbsd-dev 3 解压后进入apue.3e目录下执行make 4 复制include下的apue.h和lib下的error.c到 /usr/include/中 5 在apue.h中加入#include “error.c” 应该就OK了!!!
暂无图片
编程学习 ·

从零开发英雄联盟、王者荣耀电竞比分预测系统

从零开发英雄联盟、王者荣耀电竞比分预测系统 快速开发一款电竞比分预测系统 想要快速熟悉电竞比分预测的逻辑,你总是需要付出时间和精力的,对于程序员的成长,最好的方法就是从一个项目入手,下面让我来教你手把手的从0搭建一个电竞预测系统。电竞预测系统,属于行业比较新的…
暂无图片
编程学习 ·

&& 、 ||和!! 运算符分别能做什么?

很明显这几个都是逻辑运算符!基本用法我就不说了,自己去看文档,先看几个简单的例子吧! var a = null,b = 10; if (b >= 10) {a = 1; } else if (b >= 20) {a = 2; } else if (b >= 30) {a = 3; } else if (b >= 40) {a = 4; };这样写是不是很难看,有些人还会用 …
暂无图片
编程学习 ·

ssm框架下简单的增删改查实现

ssm框架下简单的增删改查实现 代码太多就不逐一展示了,到目前为止这几个类之间的关系还是有点不太清楚。 package controller;import bean.User; import dao.UserDao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype…
暂无图片
编程学习 ·

神经网络架构搜索——可微分搜索 (Noisy-DARTS)

神经网络架构搜索——可微分搜索 (Noisy-DARTS)动机FairDARTS: Sigmoid函数替换Softmax函数NoisyDARTS:skip-connection注入噪声方法实现如何加噪声?加入怎样的噪声?实验结果架构参数可视化CIFAR-10实验结果ImageNet实验结果消融实验有噪声 vs. 无噪声无偏噪声 vs. 有偏噪…
暂无图片
编程学习 ·

IO流

File类 添加方法:1.创建普通文本文档:boolean flag= file1.createNewFile(); 2.创建文件夹:boolean flag2=file2.mkdir(); 3.同时创建多个文件夹:boolean flag3=file3.mkdirs();public class fileDemo1 {public static void main(String[] args) {try {//不管D盘是否有这个…
暂无图片
编程学习 ·

Go 结构体内存分配机制

结构体内存分配机制我们定义一个Person结构体(包括名字,年龄)我们看看下面一段代码,输出什么内容?var p1 Person p1.Name = "小明" var p2 Person = p1 fmt.Printin(p2.Age)p2.Name = "tom" fmt.Printf("p2.Name=%v p1.Name=%v",p2.Name,…
暂无图片
编程学习 ·

C#异步Task

笔记整理(原资源网址): https://www.bilibili.com/video/BV1Zf4y117fs?p=12 Task Thread 的问题线程(Thread)是用来创建并发(concurrent)的一种低级别工具,它有一些限制,尤其是:虽然开始线程的时候可以方便的传入数据,但是当 Join 的时候,很难从线程获得返回值。 可能…
暂无图片
编程学习 ·

mac OS中配置通过symbolink方式解决路径问题

mac OS中配置通过symlink方式解决路径问题 第一次在mac OS中安装Django,使用pip3 install Django安装了Django V3.0.8版本,出现以下的现象:使用python3 --version可以看到Python版本,正确 使用python3 -m django --version可以看到Django版本,正确 但在使用django-admin s…