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

网站建设要求 牛商网蒙自网站建设

网站建设要求 牛商网,蒙自网站建设,做的网站怎么进入互联网,wordpress清空登录简介加解密现状#xff0c;编写此系列文章的背景#xff1a;需要考虑系统环境兼容性问题#xff08;Linux、Windows#xff09;语言互通问题#xff08;如C#、Java等#xff09;#xff08;加解密本质上没有语言之分#xff0c;所以原则上不存在互通性问题#xff09;… 简介加解密现状编写此系列文章的背景需要考虑系统环境兼容性问题Linux、Windows语言互通问题如C#、Java等加解密本质上没有语言之分所以原则上不存在互通性问题网上资料版本不一、或不全面.NET官方库密码算法提供不全面很难针对其他语言Java进行适配本系列文章主要介绍如何在 .NET Core 中使用非对称加密算法、编码算法、消息摘要算法、签名算法、对称加密算法、国密算法等一系列算法如有错误之处还请大家批评指正。本系列文章旨在引导大家能快速、轻松的了解接入加解密乃至自主组合搭配使用BouncyCastle密码术包中提供的算法。本系列代码项目地址https://github.com/fuluteam/ICH.BouncyCastle.git上一篇文章《.NET Core加解密实战系列之——对称加密算法》https://www.cnblogs.com/fulu/p/13650079.html功能依赖BouncyCastlehttps://www.bouncycastle.org/csharp 是一个开放源码的轻量级密码术包它支持大量的密码术算法它提供了很多 .NET Core标准库没有的算法。支持 .NET 4.NET Standard 1.0-2.0WPSilverlightMonoAndroidXamarin.iOS.NET Core功能依赖Portable.BouncyCastlePortable.BouncyCastle • 1.8.6前言在工作中我们难免会接触对接外部系统如银行、支付宝、微信等对接过程中又无可避免会对数据的加解密和加签验签。一般第三方会提供一个授权证书让我们自行解密提取秘钥。为了让你拿到证书后不会像我当初一样一脸懵逼咱们来看看如何使用C#代码制作使用p12证书。当然比较常见的还是推荐大家使用OpenSSL。OpenSSL是目前最流行的 SSL密码库工具其提供了一个通用、健壮、功能完备的工具套件用以支持SSL/TLS 协议的实现。官网https://www.openssl.org/source/什么是p12证书公钥加密技术12号标准Public Key Cryptography Standards #12PKCS#12为存储和传输用户或服务器私钥、公钥和证书指定了一个可移植的格式。它是一种二进制格式这些文件也称为PFX文件。P12证书包含了私钥、公钥并且有口令保护在证书泄露后还有最后一道保障。没有证书口令无法提取秘钥。对PKCS标准感兴趣的小伙伴可以参考百度百科PKCS介绍什么是X.509格式在密码学中X.509是定义公钥证书格式的标准。X.509证书用于许多Internet协议包括TLS/SSL它是HTTPS(用于浏览web的安全协议)的基础。它们也用于离线应用程序比如电子签名。一个X.509证书包含一个公钥和一个标识(主机名、组织或个人)由证书颁发机构签名或自签名。当证书由受信任的证书颁发机构签名时或者通过其他方法进行验证时持有该证书的人可以依赖于它包含的公钥来与另一方建立安全通信或者验证由相应私钥数字签名的文档。X.509还定义了证书撤销列表这是一种分发被签名机构认为无效的证书信息的方法以及认证路径验证算法该算法允许证书由中间CA证书签名而中间CA证书又由其他证书签名最终到达信任锚。X.509由国际电信联盟标准化部门(ITU-T)定义并基于ITU-T的另一个标准ASN.1。SSL Certificate (编码)格式SSL Certificate实际上就是X.509 Certificate。X.509是一个定义了certificate结构的标准。它在SSL certificate中定义了一个数据域。X.509使用名为 Abstract Syntax Notation One (ASN.1)的通用语言来描述certificate的数据结构。X.509 certificate 有几种不同的格式例如 PEMDERPKCS#7 和 PKCS#12。PEM和PKCS#7格式使用Base64 ASCII编码而DER和PKCS#12使用二进制编码。certificate文件基于不同的编码格式有不同的文件扩展名。如下图就展示了X.509证书的编码方式和文件扩展名。X.509 证书结构X.509证书的结构是用ASN.1(Abstract Syntax Notation One抽象语法标记)来描述其数据结构并使用ASN1语法进行编码。X.509 v3数字证书的结构如下certificate 证书Version Number版本号Serial Number序列号ID Signature Algorithm ID签名算法Issuer Name颁发者名称Validity period 有效期Not before起始日期Not after截至日期Subject Name主题名称Subject pbulic Key Info 主题公钥信息Public Key Algorithm公钥算法Subject Public Key主题公钥Issuer Unique Identifier (optional)颁发者唯一标识符可选Subject Unique Identifier (optional)主题唯一标识符可选Extensions (optional) 证书的扩展项可选Certificate Sigature Algorithm证书签名算法Certificate Signature证书的签名证书操作证书生成/// summary/// 生成证书/// /summary/// param namenotAfter证书失效时间/param/// param namekeyStrength密钥长度/param/// param namepassword证书密码/param/// param namesignatureAlgorithm设置将用于签署此证书的签名算法/param/// param nameissuer设置此证书颁发者的DN/param/// param namesubject设置此证书使用者的DN/param/// param namefriendlyName设置证书友好名称可选/param/// param namenotBefore证书生效时间/parampublic static void GenerateCertificate(string filename, string password, string signatureAlgorithm, X509Name issuer, X509Name subject, DateTime notBefore, DateTime notAfter, string friendlyName, int keyStrength 2048){SecureRandom random new SecureRandom(new CryptoApiRandomGenerator());var keyGenerationParameters new KeyGenerationParameters(random, keyStrength);var keyPairGenerator new RsaKeyPairGenerator(); //RSA密钥对生成器keyPairGenerator.Init(keyGenerationParameters);var subjectKeyPair keyPairGenerator.GenerateKeyPair();ISignatureFactory signatureFactory new Asn1SignatureFactory(signatureAlgorithm, subjectKeyPair.Private, random);//the certificate generatorX509V3CertificateGenerator certificateGenerator new X509V3CertificateGenerator();var spki SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(subjectKeyPair.Public);//设置一些扩展字段//允许作为一个CA证书可以颁发下级证书或进行签名certificateGenerator.AddExtension(X509Extensions.BasicConstraints, true, new BasicConstraints(true));//使用者密钥标识符certificateGenerator.AddExtension(X509Extensions.SubjectKeyIdentifier, false, new SubjectKeyIdentifier(spki));//授权密钥标识符certificateGenerator.AddExtension(X509Extensions.AuthorityKeyIdentifier, false, new AuthorityKeyIdentifier(spki));certificateGenerator.AddExtension(X509Extensions.ExtendedKeyUsage.Id, true, new ExtendedKeyUsage(KeyPurposeID.IdKPServerAuth));//证书序列号BigInteger serialNumber BigIntegers.CreateRandomInRange(BigInteger.One, BigInteger.ValueOf(long.MaxValue), random);certificateGenerator.SetSerialNumber(serialNumber);certificateGenerator.SetIssuerDN(issuer); //颁发者信息certificateGenerator.SetSubjectDN(subject); //使用者信息certificateGenerator.SetNotBefore(notBefore); //证书生效时间certificateGenerator.SetNotAfter(notAfter); //证书失效时间certificateGenerator.SetPublicKey(subjectKeyPair.Public);Org.BouncyCastle.X509.X509Certificate certificate certificateGenerator.Generate(signatureFactory);//生成cer证书公钥证书//var certificate2 new X509Certificate2(DotNetUtilities.ToX509Certificate(certificate))//{// FriendlyName friendlyName, //设置友好名称//};cer公钥文件//var bytes certificate2.Export(X509ContentType.Cert);//using (var fs new FileStream(certPath, FileMode.Create))//{// fs.Write(bytes, 0, bytes.Length);//}//另一种代码生成p12证书的方式要求使用.net standard 2.1//certificate2 // certificate2.CopyWithPrivateKey(DotNetUtilities.ToRSA((RsaPrivateCrtKeyParameters)keyPair.Private));//var bytes2 certificate2.Export(X509ContentType.Pfx, password);//using (var fs new FileStream(pfxPath, FileMode.Create))//{// fs.Write(bytes2, 0, bytes2.Length);//}var certEntry new X509CertificateEntry(certificate);var store new Pkcs12StoreBuilder().Build();store.SetCertificateEntry(friendlyName, certEntry); //设置证书var chain new X509CertificateEntry[1];chain[0] certEntry;store.SetKeyEntry(friendlyName, new AsymmetricKeyEntry(subjectKeyPair.Private), chain); //设置私钥using (var fs File.Create(filename)){store.Save(fs, password.ToCharArray(), random); //保存};}private static void Certificate_Sample(){//颁发者DNvar issuer new X509Name(new ArrayList{X509Name.C,X509Name.O,X509Name.OU,X509Name.L,X509Name.ST}, new Hashtable{[X509Name.C] CN,[X509Name.O] Fulu Newwork,[X509Name.OU] Fulu RSA CA 2020,[X509Name.L] Wuhan,[X509Name.ST] Hubei,});//使用者DNvar subject new X509Name(new ArrayList{X509Name.C,X509Name.O,X509Name.CN}, new Hashtable{[X509Name.C] CN,[X509Name.O] ICH,[X509Name.CN] *.fulu.com});var password 123456; //证书密码var signatureAlgorithm SHA256WITHRSA; //签名算法//生成证书CertificateUtilities.GenerateCertificate(fuluca.pfx, password, signatureAlgorithm, issuer, subject, DateTime.UtcNow.AddDays(-1), DateTime.UtcNow.AddYears(2), fulu passport);//加载证书X509Certificate2 pfx new X509Certificate2(fuluca.pfx, password, X509KeyStorageFlags.Exportable);var keyPair DotNetUtilities.GetKeyPair(pfx.PrivateKey);var subjectPublicKeyInfo SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(keyPair.Public);var privateKeyInfo PrivateKeyInfoFactory.CreatePrivateKeyInfo(keyPair.Private);var privateKey Base64.ToBase64String(privateKeyInfo.ParsePrivateKey().GetEncoded());var publicKey Base64.ToBase64String(subjectPublicKeyInfo.GetEncoded());Console.ForegroundColor ConsoleColor.DarkYellow;Console.WriteLine(Pfx证书私钥);Console.WriteLine(privateKey);Console.WriteLine(Pfx证书公钥);Console.WriteLine(publicKey);var data hello rsa;Console.WriteLine($加密原文{data});var pkcs1data RSA.EncryptToBase64(data, AsymmetricKeyUtilities.GetAsymmetricKeyParameterFormPublicKey(publicKey), Algorithms.RSA_ECB_PKCS1Padding);Console.WriteLine(加密结果);Console.WriteLine(pkcs1data);Console.WriteLine(解密结果);var datares RSA.DecryptFromBase64(pkcs1data,AsymmetricKeyUtilities.GetAsymmetricKeyParameterFormPrivateKey(privateKey), Algorithms.RSA_ECB_PKCS1Padding);Console.WriteLine(datares);}生成的证书文件证书安装双击证书文件进行安装存储位置选择当前用户。证书存储选择个人查看安装的证书可以在MMC的证书管理单元中对证书存储区进行管理。Windows没有给我们准备好直接的管理证书的入口。自己在MMC中添加步骤如下开始→运行→MMC打开一个空的MMC控制台。在控制台菜单文件→添加/删除管理单元→添加按钮→选”证书”→添加→选”我的用户账户”→关闭→确定展开 证书控制台根节点→证书-当前用户→个人→证书找到证书可以看到下图中选中的即为我们创建的证书文件双击证书可以看到证书的相关信息OpenSSL安装工具openssl安装软件Win64 OpenSSL v1.1.1g Light下载地址http://slproweb.com/products/Win32OpenSSL.htmlPFX文件提取公钥私钥openssl pkcs12 -in fulusso.pfx -nocerts -nodes -out private.key输入密码openssl rsa -in private.key -out pfx_pri.pemopenssl rsa -in private.key -pubout -out pfx_pub.pem安装好OpenSSL后打开Win64 OpenSSL Command Prompt读取到证书文件所在目录按上述命令执行打开证书所在目录可以看到文件 private.key、pfx_pri.pem、pfx_pub.pem 已经生成好了。用文本工具打开私钥文件pfx_pri.pem如下图打开公约文件pfx_pub.pem如下图比对与上文控制台打印出的公钥、私钥一致。下期预告下一篇将介绍国密算法敬请期待。。。‍
http://www.pierceye.com/news/226215/

相关文章:

  • 网站优化首页付款网站制作职业
  • 做网站的软件有些什么建设公司门户网站
  • 浙江省长兴县建设局网站自己专业做网站
  • 做网站外包最牛的公司东莞网站制作十年乐云seo
  • 慈溪专业做网站公司网站后台内容更换怎么做
  • wordpress网站搭建教程视频网站优化前景
  • 门户网站的优点seo月薪
  • 怎样做网站静态什么网站做二维码比较好
  • 共享虚拟主机做网站够用么抖音短剧推广怎么做
  • 个人网站备案内容写什么西部数码网站管理助手v3.1
  • 搜索引擎 网站模板wordpress 图片走cdn
  • 常见cms网站源码下载重庆微信网站开发公司
  • 网站开发用什么电脑天津室内设计公司排名
  • 云南网站建设招商建设公司网站计入哪个科目
  • 网站备案在哪里查询海外市场推广方案
  • 中诺建设集团有限公司网站微信商家小程序收费吗
  • 沙井品牌网站建设南宁网站提升排名
  • 网站空间备案要多久数商云是外包吗
  • 网站设计公司需要什么资质网站建设所需服务器
  • 织梦cms仿网站教程怎么做网站板块
  • 建设厅网站更改登陆密码wordpress主题 水墨
  • 彩云小梦ai写作网站机关网站建设情况汇报
  • 合肥专业网站优化手机界面设计素材
  • 台州网站建设惠店王烨烨
  • 工程建设比选公告固价方式网站wordpress html5的关系
  • 广州市网站建设 乾图信息科技潍坊市建设监理协会网站
  • 网站建优化网页脚本设计
  • 手机能访问电脑上自己做的网站吗网页设计作品到哪个网站
  • 网站推广成功案例城乡住房建设部官网查询
  • 养殖类网站模板那个网站的公众后推广做的好