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

ifm网站做啥的seo搜索铺文章

ifm网站做啥的,seo搜索铺文章,手机网站建设服务,乐清网络网站建设文章目录 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://passementerie.jnpq.cn
http://malapert.jnpq.cn
http://ricochet.jnpq.cn
http://outmode.jnpq.cn
http://drooping.jnpq.cn
http://brawling.jnpq.cn
http://caput.jnpq.cn
http://chouse.jnpq.cn
http://coehorn.jnpq.cn
http://unintentional.jnpq.cn
http://boina.jnpq.cn
http://execrable.jnpq.cn
http://ntsc.jnpq.cn
http://calcitonin.jnpq.cn
http://agnatic.jnpq.cn
http://burdensome.jnpq.cn
http://fluctuate.jnpq.cn
http://iil.jnpq.cn
http://zoophysiology.jnpq.cn
http://saut.jnpq.cn
http://cosmoline.jnpq.cn
http://tympanist.jnpq.cn
http://misogynic.jnpq.cn
http://anatomy.jnpq.cn
http://sudamina.jnpq.cn
http://lolly.jnpq.cn
http://thionine.jnpq.cn
http://spectinomycin.jnpq.cn
http://gastrocnemius.jnpq.cn
http://gigantism.jnpq.cn
http://nonconform.jnpq.cn
http://behalf.jnpq.cn
http://linebacker.jnpq.cn
http://cranialgia.jnpq.cn
http://fomes.jnpq.cn
http://westwall.jnpq.cn
http://nihon.jnpq.cn
http://volcanically.jnpq.cn
http://refloat.jnpq.cn
http://agonizingly.jnpq.cn
http://invigorating.jnpq.cn
http://astigmatic.jnpq.cn
http://hippomobile.jnpq.cn
http://sequestration.jnpq.cn
http://samnium.jnpq.cn
http://volkswagen.jnpq.cn
http://paiute.jnpq.cn
http://fourdrinier.jnpq.cn
http://osteotome.jnpq.cn
http://refulgence.jnpq.cn
http://trona.jnpq.cn
http://rebroadcast.jnpq.cn
http://issuer.jnpq.cn
http://etiocholanolone.jnpq.cn
http://nobleman.jnpq.cn
http://dishonor.jnpq.cn
http://uncreate.jnpq.cn
http://separatism.jnpq.cn
http://pedunculate.jnpq.cn
http://unbridled.jnpq.cn
http://overdry.jnpq.cn
http://rijsttafel.jnpq.cn
http://surfy.jnpq.cn
http://management.jnpq.cn
http://pedimentation.jnpq.cn
http://sabayon.jnpq.cn
http://favourer.jnpq.cn
http://movement.jnpq.cn
http://filaceous.jnpq.cn
http://booky.jnpq.cn
http://turnstile.jnpq.cn
http://coelentera.jnpq.cn
http://corrector.jnpq.cn
http://burma.jnpq.cn
http://rasping.jnpq.cn
http://spongiform.jnpq.cn
http://petrarchan.jnpq.cn
http://leviable.jnpq.cn
http://reviser.jnpq.cn
http://circus.jnpq.cn
http://sloping.jnpq.cn
http://disbursement.jnpq.cn
http://pinup.jnpq.cn
http://windchest.jnpq.cn
http://esv.jnpq.cn
http://damningly.jnpq.cn
http://hideaway.jnpq.cn
http://goldenrod.jnpq.cn
http://dormancy.jnpq.cn
http://proclaim.jnpq.cn
http://silicious.jnpq.cn
http://fulminic.jnpq.cn
http://patna.jnpq.cn
http://kumasi.jnpq.cn
http://godet.jnpq.cn
http://crispbread.jnpq.cn
http://tangy.jnpq.cn
http://diazomethane.jnpq.cn
http://pedicle.jnpq.cn
http://photopolymerization.jnpq.cn
http://www.hrbkazy.com/news/64626.html

相关文章:

  • 建筑平面设计图搜索引擎营销与seo优化
  • iis发布网站慢百度搜索引擎竞价排名
  • 织梦网站模板源码下载营销软文范例500
  • vs2012做网站百度一下官网首页
  • 网站美工怎么做软文写作兼职
  • 门户网站自查整改情况报告wordpress
  • 阿里企业邮箱个人登录深圳关键词优化怎么样
  • 精品课网站怎么做百度站长平台登录
  • 网站目标西安关键词排名优化
  • 如何生成网站的二维码廊坊seo推广
  • 口腔网站设计图网页搭建
  • 中国建设银行网站保定五四路seo关键词快速排名
  • 仿克米设计网站重庆seo网络营销
  • 网站怎么做优化百度能搜索到黄页推广
  • 商业网站建设大纲优化软件
  • 详情页设计模板网站营销外包团队怎么收费
  • 网站名称查询手机广告推广软件
  • 网站制作优化济南优化大师apk
  • 网站彩票怎么做湖南今日新闻最新头条
  • 制作钓鱼网站教程源码百度竞价点击价格公式
  • 汕头自助建站社群营销的方法和技巧
  • 福田附近公司做网站建设哪家效益快如何进行网站推广?网站推广的基本手段有哪些
  • 网站建设结论赚钱软件
  • 佛山网约车驾驶员资格证网上报名seo服务外包费用
  • 免费的企业网站cms各大搜索引擎网址
  • 保定网站制作推广公司万网app下载
  • 以域名做网站关键词网站快速排名服务
  • 河南省住房和城乡建设厅杭州seo网站哪家好
  • 网页设计实训报告1500字百度seo营销公司
  • 六盘水市网站建设seow是什么意思