SM2加密解密执行报 Invalid point encoding 0x5c
SM2加密解密执行报 Invalid point encoding 0x5c
私钥前加00,密文前加04,公钥前加04 确实可以解决问题。内在原因?
解决方法一:
SM2加密数据 由C1,C2,C3组成 国密密文的正确排序是 C1+C3+C2
我们安全芯片SM2加密处理的密文顺序是 C1+C3+C2 而BC库加密出来的顺序是C1+C2+C3
我们安全在C1数据最前面没有04,而BC库加密出来的数据前面有04
BC库生成SM2公私钥对时 私钥的前面 偶尔会多加两个 00 而我们安全芯片 不支持 去掉00就可以
公钥的签名偶尔会多加04 而我们安全芯片 不支持 去掉04就可以
解决方法二:
通过hutool 包封装好的方法进行加解密
引入代码块
<dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.64</version></dependency><dependency> <groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.4.3</version></dependency>
sm2加密代码
//将已知密钥加载ECPrivateKeyParameters类
public static final String PUBLIC_KEY="****填写生成的公钥***";
public static final String PRIVATE_KEY="****填写生成的私钥***";ECPrivateKeyParameters privateKeyParameters= BCUtil.toSm2Params(WorkFlowServiceImpl.PRIVATE_KEY);
String xhex= WorkFlowServiceImpl.PUBLIC_KEY.substring(0,64);
String yhex=WorkFlowServiceImpl.PUBLIC_KEY.substring(64,128);
ECPublicKeyParameters ecpub= BCUtil.toSm2Params(xhex,yhex);
//实例化sm2对象
SM2 sm2=new SM2(privateKeyParameters,ecpub);
sm2.usePlainEncoding();
//加密方式
sm2.setMode(SM2Engine.Mode.C1C2C3);
//sm2加密
String enStr=sm2.encryptHex(str, KeyType.PublicKey);
SM2加密解密执行报 Invalid point encoding 0x5c相关推荐
- c++国密算法SM2加密解密demo
c++国密算法SM2加密解密 一.代码 一.代码 封装加密.解密接口: 加密接口: Encrpt_SM2() 解密接口:Decrypt_SM2() 加密解密结果可以和nodejs的模块sm-crypt ...
- 国密算法SM2加密解密
一.依赖包 <!-- hutool的 SM2 加密--><dependency><groupId>org.bouncycastle</groupId>& ...
- Java通用C# SM2加密解密
起因是对接一个接口 他们只能提供java deom c#的没有, 百度了一天不能适配, 只能看java 还原的C#. 代码 public class SM2CryptoUtil{public SM2 ...
- cobaltstrike生成一个原生c,然后利用xor加密解密执行
首先cobaltstrike生成一个原生c,我的是: /* length: 797 bytes */ unsigned char buf[] = "\xfc\xe8\x89\x00\x00\ ...
- SM2加密解密工具类
Maven依赖 <dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jd ...
- SM2 加密解密 公式密匙 导出
借用 hutool-all,bouncycastle实现,公式密匙导出文件,解密再读取文件 pom.xml <dependency><groupId>cn.hutool< ...
- DES加密解密与AES加密解密
× 目录 [1]AES加密算法和DES加密算法的效率比较 [2]AES和DES加密解密代码 随着开发时间的变长,当初认为比较难的东西,现在渐渐也就变的不那么难了!特别对于一些经常很少使用的类,时间长了 ...
- 使用 Python 脚本执行国密 sm2 加解密
一.场景 工作中的一个场景:Go 需要对信息加解密,但是研究了 GmSSL Go API 文档之后,发现是依赖于 CGO 的,同事配了半天环境没配成功.于是换了一个方法,选择 Go 调 Python ...
- sm2多端加密解密,java,js,android,ios实战
SM2非对称加密 公钥 = 04xxxxxxxxxxxxxxxxxxxx,私钥 = 276xxxx原文:你哦哈1232154 3654 {} ,俺可接受不符点 公钥私钥是我后台自己生成的, java代 ...
最新文章
- Virtualbox安装使用注意
- Linux的Nginx报错emerg unknown directive stub_status in
- 动态规划,从例子到理解
- JZOJ100047.基因变异 (Standard IO)
- Java中,为什么子类的构造方法中必须调父类的构造方法?
- python tkinter载入图片_Python的GUI编程
- 开通写scdn博客第一天
- mac自带代码对比工具
- 电压源和电流的关联参考方向_电流的参考方向_电压的参考方向
- MATLAB 调用百度云文字识别的具体应用
- android 控件发光_Android自定义控件打造闪闪发光字体
- 分享个自己Python爬虫时的浏览器标识库
- 秋冬季健康生活小常识
- ipad显示连接不到商店服务器,iPad无法连接App Store 打不开怎么办
- 扫 雷 小 游 戏
- Flink Joining
- 42步进电机转速力矩曲线_步进电机的转速 – 转矩曲线
- 【FPGA教程案例12】基于vivado核的复数乘法器设计与实现
- SpringBoot JDBC Mysql 时区报错 serverTimezone解决方案分析
- [AHK]为通达信标记文字窗口的按钮增加热键