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相关推荐

  1. c++国密算法SM2加密解密demo

    c++国密算法SM2加密解密 一.代码 一.代码 封装加密.解密接口: 加密接口: Encrpt_SM2() 解密接口:Decrypt_SM2() 加密解密结果可以和nodejs的模块sm-crypt ...

  2. 国密算法SM2加密解密

    一.依赖包 <!-- hutool的 SM2 加密--><dependency><groupId>org.bouncycastle</groupId>& ...

  3. Java通用C# SM2加密解密

    起因是对接一个接口 他们只能提供java deom c#的没有,  百度了一天不能适配, 只能看java 还原的C#. 代码 public class SM2CryptoUtil{public SM2 ...

  4. cobaltstrike生成一个原生c,然后利用xor加密解密执行

    首先cobaltstrike生成一个原生c,我的是: /* length: 797 bytes */ unsigned char buf[] = "\xfc\xe8\x89\x00\x00\ ...

  5. SM2加密解密工具类

    Maven依赖 <dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jd ...

  6. SM2 加密解密 公式密匙 导出

    借用 hutool-all,bouncycastle实现,公式密匙导出文件,解密再读取文件 pom.xml <dependency><groupId>cn.hutool< ...

  7. DES加密解密与AES加密解密

    × 目录 [1]AES加密算法和DES加密算法的效率比较 [2]AES和DES加密解密代码 随着开发时间的变长,当初认为比较难的东西,现在渐渐也就变的不那么难了!特别对于一些经常很少使用的类,时间长了 ...

  8. 使用 Python 脚本执行国密 sm2 加解密

    一.场景 工作中的一个场景:Go 需要对信息加解密,但是研究了 GmSSL Go API 文档之后,发现是依赖于 CGO 的,同事配了半天环境没配成功.于是换了一个方法,选择 Go 调 Python ...

  9. sm2多端加密解密,java,js,android,ios实战

    SM2非对称加密 公钥 = 04xxxxxxxxxxxxxxxxxxxx,私钥 = 276xxxx原文:你哦哈1232154 3654 {} ,俺可接受不符点 公钥私钥是我后台自己生成的, java代 ...

最新文章

  1. Virtualbox安装使用注意
  2. Linux的Nginx报错emerg unknown directive stub_status in
  3. 动态规划,从例子到理解
  4. JZOJ100047.基因变异 (Standard IO)
  5. Java中,为什么子类的构造方法中必须调父类的构造方法?
  6. python tkinter载入图片_Python的GUI编程
  7. 开通写scdn博客第一天
  8. mac自带代码对比工具
  9. 电压源和电流的关联参考方向_电流的参考方向_电压的参考方向
  10. MATLAB 调用百度云文字识别的具体应用
  11. android 控件发光_Android自定义控件打造闪闪发光字体
  12. 分享个自己Python爬虫时的浏览器标识库
  13. 秋冬季健康生活小常识
  14. ipad显示连接不到商店服务器,iPad无法连接App Store 打不开怎么办
  15. 扫 雷 小 游 戏
  16. Flink Joining
  17. 42步进电机转速力矩曲线_步进电机的转速 – 转矩曲线
  18. 【FPGA教程案例12】基于vivado核的复数乘法器设计与实现
  19. SpringBoot JDBC Mysql 时区报错 serverTimezone解决方案分析
  20. [AHK]为通达信标记文字窗口的按钮增加热键

热门文章

  1. 为高性能FPGA平台选择合适的存储器
  2. 【调剂】广东省杰青广州大学范立生教授课题组接收计算机学硕调剂
  3. 密室逃脱游戏解决方案-森林迷宫-炸弹人等
  4. .net frame work 框架各版本
  5. 更改PDF中的文本框的文字的大小和颜色
  6. std::enable_if 的几种用法
  7. html中怎么把边框设置成花边,word怎么设置花边有多少种方法
  8. mysql 外键冲突_mysql添加外键错误是什么原因
  9. 【星辰傀儡线·命运环·卷一 血鸦】 10 洁家家主
  10. JVM -- 运行期优化;JIT(九)