OpenSSL3.1.1ECC加密、解密、签名、验签(国密sm2、sm3)openssl3默认废弃了旧版本(opessl1.x)的部分api导致部分旧ecc代码无法使用(可以通过配置编译选项打开),这里展示如何使用新接口用ECC进行加密解密。新接口是真的方便,基本上你都不需要懂啥密码学知识,对我们这种密码白痴来说太好了头文件生成密钥对导出公钥&导入公钥公钥加密私钥解密私钥签名公钥验签工具函数所有代码(后来改过)头文件小小的封装了一下#include"openssl/crypto.h"#include"openssl/types.h"#include"openssl/x509.h"#includ
一、RSA加密简介RSA加密是一种非对称加密。可以在不直接传递密钥的情况下,完成解密。这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险。是由一对密钥来进行加解密的过程,分别称为公钥和私钥。两者之间有数学相关,该加密算法的原理就是对一极大整数做因数分解的困难性来保证安全性。通常个人保存私钥,公钥是公开的(可能同时多人持有)。二、RSA加密、签名区别加密和签名都是为了安全性考虑,但略有不同。常有人问加密和签名是用私钥还是公钥?其实都是对加密和签名的作用有所混淆。简单的说,加密是为了防止信息被泄露,而签名是为了防止信息被篡改。这里举2个例子说明。第一个场景:战场上,B要给A传递一条消息
加解密原文:也叫明文,就是被隐藏的文字加密法:指隐藏原文的法则密文:伪文,值对原文按照加密处理后生成可公开传递的文字秘钥:在加密法中起决定性的因素,可能是数字、词汇,也可能是一些字母,或者这些东西的组合。加密的结果生成了密文,要想让接受者能够读懂这些密文,那么就要把加密法以及密钥告诉接受者,否者接受者无法对密文解密,也就无法读懂原文对称加密算法加密和解密都使用同一个秘钥优点:算法公开,计算量小,加密速度快,加密效率高缺点:秘钥的管理和分发困难,安全性较低在数据传送前,发送方和接收方必须商定好秘钥,然后双方都必须要保存好秘钥,如果一方的秘钥被泄露了,那么加密的信息也就不安全了。另外,每对用户每次
在FIPS-205标准(草案)中将SPHINCS+后量子标准数字签名算法命名为SLH-DSA(statelesshash-baseddigitalsignature)。一、前言SPHINCS+具有高度的安全性和抗量子特性,同时具有较高的效率和灵活性,因此被NIST选为其后量子密码标准化计划的标准算法之一。SPHINCS使用了XMSS的许多组件,但使用更大的密钥和签名来消除状态。SPHINCS+的工作方式与SPHINCS相似,但与SPHINCS有以下区别:FORS(ForestOfRandomSubsets)是SPHINCS+中用于对消息进行签名的少次签名方案,它代替了SPHINCS中使用的HO
运行环境jdk8,springboot业务背景:服务之间接口调用,通过签名作为安全认证来保证API的安全性。签名规则:1、线下分配appid和appKey,2、秘钥key+当前时间的毫秒+随机字符串通过加密工具方法(如MD5,AES等)生成一个token,3、加入timestamp(时间戳),10分钟内数据有效4、加入signature,所有数据的签名信息。传参说明:只对业务所需的参数进行加密,其他参数在头部携带:GET请求对url的参数进行加密,POST请求对body体进行加密。例如:A服务调用B服务get请求接口:xxx/xx?a=1&b=2对参数a=1&b=2进行加密得到signA服务h
1前言随着互联网的普及,分布式服务部署越来越流行,服务之间通信的安全性也是越来越值得关注。这里,笔者把应用与服务之间通信时,进行的的安全性相关,加签与验签,进行了一个简单的记录。2安全性痛点网关服务接口,暴漏在公网,被非法调用?增加了token安全验证,被抓包等其他手段拦截了token,token验证无效?参数被非法获取,非法调用系统应用的接口?接口参数被非法获取后,同一个接口被重复多次非法调用?3技术选型3.1对称加密与非对称加密对比对称加密优点:加密速度快缺点:密钥管理分配困难,安全性较低非对称加密优点:安全性较高缺点:加密速度慢对称加密技术加密和解密使用的都是同一个密钥,因此密钥的管理非
RSA简介RSA是一种非对称加密算法,使用公钥加密就可以使用私钥解密,使用私钥加密就可以使用公钥解密。RSA公钥对外公开,私钥自己保留。RSA既能加密、解密,也能加签、验签加密解密:RSA是公钥加密,私钥私密。数据发送方使用接收方的公钥来对数据进行加密,接收方接收到数据之后用自己的私钥解密加签验签:RSA私钥加签,公钥验签。数据发送方使用自己的私钥对数据进行签名,数据接收方使用数据发送方的公钥来验签。我遇到的业务场景是:服务端接口开发人员给了我一套客户端的PKCS1格式的私钥字符串和服务端的公钥字符串。我给服务端发送数据的时候要使用私钥对数据进行签名之后再发送。接收到服务端返回的数据之后要使用
目录一、序言二、关于PKCS#1和PKCS#8格式密钥1、简介2、区别二、关于JSEncrypt三、关于jsrsasign四、前端RSA加解密、加验签示例1、相关依赖2、cryptoUtils工具类封装3、测试用例五、Java后端RSA加解密、加验签1、CryptoUtils工具类封装2、测试用例六、前后端加解密、加验签交互测试1、前端加密,后端解密(1)前端代码(2)后端代码2、后端加密,前端解密(1)后端代码(2)前端代码3、前端加签,后端验签(1)前端代码(2)后端代码4、后端加签,前端验签(1)后端代码(2)前端代码一、序言最近有一些安全性要求比较高的场景,我们提供API给第三方商户用
代码地址:GitHub-passerbyYSQ/DemoRepository:各种开发小demo目录概念开放接口验签接口验签调用流程1.约定签名算法2.颁发非对称密钥对3.生成请求参数签名4.请求携带签名调用代码设计1.签名配置类2.签名管理类3.自定义验签注解4.AOP实现验签逻辑5.解决请求体只能读取一次6.自定义工具类概念开放接口 开放接口是指不需要登录凭证就允许被第三方系统调用的接口。为了防止开放接口被恶意调用,开放接口一般都需要验签才能被调用。提供开放接口的系统下面统一简称为"原系统"。验签 验签是指第三方系统在调用接口之前,需要按照原系统的规则根据所有请求参
信创改造也有一段时间了,这里记录和总结一些关于SM2算法的知识点。1.pom.xmldependency>groupId>org.bouncycastlegroupId>artifactId>bcprov-jdk15onartifactId>version>1.57version>dependency>或dependency>groupId>org.bouncycastlegroupId>artifactId>bcprov-jdk15onartifactId>version>1.70version>dependency>由于BC包版本多种多样,且实现SM2算法的过程和结果并不相同。因此在引入b