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

使用的电脑做网站的服务器泰安网站优化公司

使用的电脑做网站的服务器,泰安网站优化公司,正邦网站建设,博客网站建设设计报告初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 github源码指引的指引-CSDN博…

初级代码游戏的专栏介绍与文章目录-CSDN博客

我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。

github源码指引的指引-CSDN博客


        本文是国密起步6:GmSSL3使用SM4自定义格式加解密C++版-CSDN博客的对应C#版。

        GmSSL没有C#接口,所以C#上要用别的库,比如BouncyCastle这个著名加解密库。nuget上的名字是BouncyCastle.Cryptography。

一、源码

        因为是跟C++版是对照关系,直接上源码了:

	static public string gm4DecryptMessage(string text, string userkey){try{byte[] encryptdata = Convert.FromBase64String(text);//格式为版本1字节、IV16字节、加密后的数据(第一个块是明文长度,仅用8字节,其余未用)byte[] key = new byte[16];//密钥var bytesUserKey = Encoding.UTF8.GetBytes(userkey);for (int i = 0; i < 16; ++i){if (i < userkey.Length) key[i] = bytesUserKey[i];else key[i] = 0;}KeyParameter Key = ParameterUtilities.CreateKeyParameter("SM4", key);ParametersWithIV keyParamWithIv = new ParametersWithIV(Key, encryptdata.Skip(1).Take(16).ToArray());IBufferedCipher inCipher = CipherUtilities.GetCipher("SM4/CBC/NoPadding");inCipher.Init(false, keyParamWithIv);byte[] full_plaindata = inCipher.ProcessBytes(encryptdata.Skip(17).ToArray());int nPlainLength = (int)BitConverter.ToInt64(full_plaindata.Take(8).ToArray());text = Encoding.UTF8.GetString(full_plaindata.Skip(16).Take(nPlainLength).ToArray());}catch (Exception ex){text = ex.ToString();}return text;}static public string gm4EncryptMessage(string text, string userkey){try{//格式为版本1字节、IV16字节、加密后的数据(第一个块是明文长度,仅用8字节,其余未用)byte[] key = new byte[16];//密钥var bytesUserKey = Encoding.UTF8.GetBytes(userkey);for (int i = 0; i < 16; ++i){if (i < userkey.Length) key[i] = bytesUserKey[i];else key[i] = 0;}byte[] IV = new byte[16];Random rand = new Random();for (int i = 0; i < 16; ++i) IV[i] = (byte)rand.Next(0, 255);KeyParameter Key = ParameterUtilities.CreateKeyParameter("SM4", key);ParametersWithIV keyParamWithIv = new ParametersWithIV(Key, IV);IBufferedCipher inCipher = CipherUtilities.GetCipher("SM4/CBC/NoPadding");inCipher.Init(true, keyParamWithIv);int plainBufLen;//明文缓冲区长度,第一个块是明文长度,其后是原始数据,按照16字节补齐if (0 == text.Length % 16) plainBufLen = 16 + text.Length;else plainBufLen = 16 + (text.Length / 16 + 1) * 16;byte[] plainBuf = new byte[plainBufLen];BitConverter.GetBytes((long)text.Length).CopyTo(plainBuf, 0);//必须是8位整数Encoding.UTF8.GetBytes(text).CopyTo(plainBuf, 16);byte[] tmp = new byte[1 + 16 + plainBufLen];//输出缓冲区tmp[0] = 1;IV.CopyTo(tmp, 1);byte[] cipher = inCipher.ProcessBytes(plainBuf);cipher.CopyTo(tmp, 17);text = "G" + Convert.ToBase64String(tmp);}catch (Exception ex){text = ex.ToString();}return text;}

         加密后的数据转为base64编码并增加一个“G”开头。实际使用的格式是这样的:

  • 明文,json格式,总是以‘{’开头
  • 压缩,C+base64
  • AES,E+base64
  • 国密,G+base64

         所以不会有冲突。


(这里是文档结束)        

http://www.ds6.com.cn/news/55067.html

相关文章:

  • 北京市住房和城乡建设委员会官方网站seo关键词的优化技巧
  • 徐东网站建设全网推广方案
  • 用ssh做网站竞价账户
  • 临湘网站建设湖人最新消息
  • 工信部网站验证码专业培训大全
  • 重庆承越网站建设公司兰州seo整站优化服务商
  • 外贸网站平台下载培训平台
  • wordpress 取消重定向兰州seo
  • delphi7 网站开发焦作关键词优化排名
  • 手机网站建设的价格自己做的网址如何推广
  • 网站乱码解决办法浙江专业网站seo
  • dedecms wap网站模板下载上海app开发公司
  • 网站建设项目功能需求分析报告推广哪个平台好
  • 可以做动感影集的网站2024年8月爆发新的大流行病毒吗
  • wordpress4.8版权修改爱站网seo工具
  • 合肥企业网站建设靠谱市场营销公司
  • 网站有了如何做推广百度快照推广
  • 做flash网站的软件直播营销策略有哪些
  • 网站设计高端网站设计seo网站运营
  • 海南建设银行官方网站seo技术培训课程
  • 广州网站建设哪个公司做得好些seo和sem的联系
  • 图书电子商务网站建设沈阳黄页88企业名录
  • asp 网站卡死网站排名优化首页
  • 网络舆情监测服务合肥seo推广公司哪家好
  • 前沿科技帮客户做的网站有钱赚吗网站优化一年多少钱
  • 怎样调试 wordpressseo网上培训多少钱
  • 做运营的网站seo技术培训岳阳
  • 威海网站建设哪一家怎么建立自己的网页
  • 杭州市富阳区建设局网站杭州网站优化咨询
  • 自己做的网站被举报违反广告法女教师遭网课入侵视频