当前位置: 首页 > news >正文

新网站百度多久收录优化的近义词

新网站百度多久收录,优化的近义词,在线购物商城网站,装饰公司营销网站建设文章目录 Presm-crypto如何使用如何引入依赖 sm2获取密钥对加密解密签名验签获取椭圆曲线点 sm3sm4加密解密 Pre 加密与安全_三种方式实现基于国密非对称加密算法的加解密和签名验签 sm-crypto https://github.com/antherd/sm-crypto 国密算法sm2、sm3和sm4的java版。基于js…

文章目录

  • Pre
  • sm-crypto
    • 如何使用
      • 如何引入依赖
    • sm2
      • 获取密钥对
      • 加密解密
      • 签名验签
      • 获取椭圆曲线点
    • sm3
    • sm4
      • 加密
      • 解密

在这里插入图片描述


Pre

加密与安全_三种方式实现基于国密非对称加密算法的加解密和签名验签


sm-crypto

https://github.com/antherd/sm-crypto

国密算法sm2、sm3和sm4的java版。基于js版本进行封装,无缝兼容js版公私钥加解密。

PS: js版:https://github.com/JuneAndGreen/sm-crypto

PS: 小程序版:https://github.com/wechat-miniprogram/sm-crypto

如何使用

如何引入依赖

如果需要使用已发布的版本,在dependencies中添加如下依赖

<dependency><groupId>com.antherd</groupId><artifactId>sm-crypto</artifactId><version>0.3.2.1</version>
</dependency>

sm2

获取密钥对

Keypair keypair = Sm2.generateKeyPairHex();
String privateKey = keypair.getPrivateKey(); // 公钥
String publicKey = keypair.getPublicKey(); // 私钥

加密解密

// cipherMode 1 - C1C3C2,0 - C1C2C3,默认为1
String encryptData = Sm2.doEncrypt(msg, publicKey); // 加密结果
String decryptData = Sm2.doDecrypt(encryptData, privateKey); // 解密结果

签名验签

ps:理论上来说,只做纯签名是最快的。

// 纯签名 + 生成椭圆曲线点
String sigValueHex = Sm2.doSignature(msg, privateKey); // 签名
boolean verifyResult = Sm2.doVerifySignature(msg, sigValueHex, publicKey); // 验签结果// 纯签名
Queue<Point> pointPool = new LinkedList(Arrays.asList(Sm2.getPoint(), Sm2.getPoint(), Sm2.getPoint(), Sm2.getPoint()));
SignatureOptions signatureOptions2 = new SignatureOptions();
signatureOptions2.setPointPool(pointPool); // 传入事先已生成好的椭圆曲线点,可加快签名速度
String sigValueHex2 = Sm2.doSignature(msg, privateKey, signatureOptions2);
boolean verifyResult2 = Sm2.doVerifySignature(msg, sigValueHex2, publicKey); // 验签结果// 纯签名 + 生成椭圆曲线点 + der编解码
SignatureOptions signatureOptions3 = new SignatureOptions();
signatureOptions3.setDer(true);
String sigValueHex3 = Sm2.doSignature(msg, privateKey, signatureOptions3); // 签名
boolean verifyResult3 = Sm2.doVerifySignature(msg, sigValueHex3, publicKey, signatureOptions3); // 验签结果// 纯签名 + 生成椭圆曲线点 + sm3杂凑
SignatureOptions signatureOptions4 = new SignatureOptions();
signatureOptions4.setHash(true);
String sigValueHex4 = Sm2.doSignature(msg, privateKey, signatureOptions4); // 签名
boolean verifyResult4 = Sm2.doVerifySignature(msg, sigValueHex4, publicKey, signatureOptions4); // 验签结果// 纯签名 + 生成椭圆曲线点 + sm3杂凑(不做公钥推导)
SignatureOptions signatureOptions5 = new SignatureOptions();
signatureOptions5.setHash(true);
signatureOptions5.setPublicKey(publicKey); // 传入公钥的话,可以去掉sm3杂凑中推导公钥的过程,速度会比纯签名 + 生成椭圆曲线点 + sm3杂凑快
String sigValueHex5 = Sm2.doSignature(msg, privateKey, signatureOptions5); // 签名
boolean verifyResult5 = Sm2.doVerifySignature(msg, sigValueHex5, publicKey, signatureOptions5); // 验签结果// 纯签名 + 生成椭圆曲线点 + sm3杂凑 + 不做公钥推 + 添加 userId(长度小于 8192)
// 默认 userId 值为 1234567812345678
SignatureOptions signatureOptions6 = new SignatureOptions();
signatureOptions6.setHash(true);
signatureOptions6.setPublicKey(publicKey);
signatureOptions6.setUserId("testUserId");
String sigValueHex6 = Sm2.doSignature(msg, privateKey, signatureOptions6); // 签名
boolean verifyResult6 = Sm2.doVerifySignature(msg, sigValueHex6, publicKey, signatureOptions6); // 验签结果

获取椭圆曲线点

Point point = Sm2.getPoint(); // 获取一个椭圆曲线点,可在sm2签名时传入

sm3

String hashData = Sm3.sm3("abc"); // 杂凑

sm4

加密

String msg = "hello world! 我是 antherd.";
String key = "0123456789abcdeffedcba9876543210"; // 16 进制字符串,要求为 128 比特String encryptData1 = Sm4.encrypt(msg, key); // 加密,默认使用 pkcs#5 填充,输出16进制字符串Sm4Options sm4Options2 = new Sm4Options();
sm4Options2.setPadding("none");
String encryptData2 = Sm4.encrypt(msg, key, sm4Options2); // 加密,不使用 padding,输出16进制字符串Sm4Options sm4Options3 = new Sm4Options();
sm4Options3.setPadding("none");
byte[] encryptData3 = Sm4.hexToBytes(Sm4.encrypt(msg, key, sm4Options3)); // 加密,不使用 padding,输出转为字节数组Sm4Options sm4Options4 = new Sm4Options();
sm4Options4.setMode("cbc");
sm4Options4.setIv("fedcba98765432100123456789abcdef");
String encryptData4 = Sm4.encrypt(msg, key, sm4Options4); // 加密,cbc 模式,输出16进制字符串

解密

String encryptData = "0e395deb10f6e8a17e17823e1fd9bd98a1bff1df508b5b8a1efb79ec633d1bb129432ac1b74972dbe97bab04f024e89c"; // 加密后的 16 进制字符串
String key = "0123456789abcdeffedcba9876543210"; // 16 进制字符串,要求为 128 比特String decryptData5 = Sm4.decrypt(encryptData, key); // 解密,默认使用 pkcs#5 填充,输出 utf8 字符串Sm4Options sm4Options6 = new Sm4Options();
sm4Options6.setPadding("none");
String decryptData6 = Sm4.decrypt(encryptData, key, sm4Options6); // 解密,不使用 padding,输出 utf8 字符串Sm4Options sm4Options7 = new Sm4Options();
sm4Options7.setPadding("none");
byte[] decryptData7 = Sm4.utf8ToArray(Sm4.decrypt(encryptData, key, sm4Options7)); // 解密,不使用 padding,输出转为字节数组Sm4Options sm4Options8 = new Sm4Options();
sm4Options8.setMode("cbc");
sm4Options8.setIv("fedcba98765432100123456789abcdef");
String decryptData8 = Sm4.decrypt(encryptData, key, sm4Options8); // 解密,cbc 模式,输出 utf8 字符串

在这里插入图片描述

http://www.yayakq.cn/news/575151/

相关文章:

  • 中国三线建设网站中国变装网站教你如何做女人
  • 自己建网站怎么赚钱网站配色案例分析
  • 网站开发 报价中国物流网官网
  • 企业为什么要做网站石家庄校园兼职网站建设
  • 设计师常用的网站站长工具箱
  • 浦城 做网站网站开发文档实训小结与讨论
  • 闽侯县住房和城乡建设局网站wordpress页面属性全
  • 网页设计与网站建设论文无锡网红餐厅
  • 网站流量显示2022引流人脉推广软件
  • 响应式网站建设品牌全网天下专用车网站建设价格
  • 建设银行u盾官方网站首页中山网
  • 网站建设与管理用什么软件有哪些方面东莞开发公司网站建设
  • 做淘客推广用什么网站好四川省建设厅职改办网站
  • 做点效果图赚钱的网站wordpress 爱范儿主题
  • .帮别人做网站装饰行业网站建设
  • 天津重型网站建设风格英文网站编辑怎么做
  • 外贸网站推广 上海三只松鼠网络营销案例分析
  • 东莞企业推广网站wordpress内存缓存
  • 网站模板 源码宣城建设网站
  • 杭州自助建站模板下载wordpress新文章数据库
  • 电商网站开发公司哪家好wordpress author=1
  • asp网站 打开网站的设计思想
  • 定制网站与模板建站维护wordpress js代码插件
  • 免费网站空间10gwordpress灰色产业
  • 网站开发的原理电子商务平台的作用
  • 公司怎么做网站需要多少钱圣亚科技网站案例
  • 商城网站开发多久网站 设计案例
  • 门户网站建设开发需要注意什么上海市建设工程咨询行业协会
  • 做营销看的网站有哪些网站群管理平台建设
  • 重庆网站建设有限公司seo是怎么优化推广的