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

做网站搭建的公司南通制作网站的有哪些公司吗

做网站搭建的公司,南通制作网站的有哪些公司吗,兰州需要做网站的公司有哪些,国家基础设施建设网站简介加解密现状#xff0c;编写此项目的背景#xff1a;需要考虑系统环境兼容性问题#xff08;Linux、Windows#xff09;语言互通问题#xff08;如C#、Java#xff09;网上资料版本不一、不全面.NET官方库密码算法提供不全面#xff0c;很难针对其他语言#xff08;… 简介加解密现状编写此项目的背景需要考虑系统环境兼容性问题Linux、Windows语言互通问题如C#、Java网上资料版本不一、不全面.NET官方库密码算法提供不全面很难针对其他语言Java进行适配本系列文章主要介绍如何结合BouncyCastle在 .NET Core 中使用非对称加密算法、编码算法、哈希算法、对称加密算法、国密算法等一系列算法内容篇幅代码居多加解密算法相关的原理知识网上有很多因此不过多介绍。如有错误之处还请大家批评指正。本系列代码项目地址https://github.com/fuluteam/ICH.BouncyCastle.git功能依赖BouncyCastlehttps://www.bouncycastle.org/csharp 是一个开放源码的轻量级密码术包它支持大量的密码术算法它提供了很多.NET Core标准库没有的算法。支持.NET 4.NET Standard 1.0-2.0WPSilverlightMonoAndroidXamarin.iOS.NET Core功能依赖Portable.BouncyCastlePortable.BouncyCastle • 1.8.5生成RSA秘钥PKCS1格式/// summary/// PKCS1非Java适用/// /summary/// param namekeySize密钥长度”一般只是指模值的位长度。目前主流可选值1024、2048、3072、4096.../param/// param nameformatPEM格式/param/// returns/returnspublic RSAKeyParameter Pkcs1(int keySize, bool formatfalse){var keyGenerator GeneratorUtilities.GetKeyPairGenerator(RSA);keyGenerator.Init(new KeyGenerationParameters(new SecureRandom(), keySize));var keyPair keyGenerator.GenerateKeyPair();var subjectPublicKeyInfo SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(keyPair.Public);var privateKeyInfo PrivateKeyInfoFactory.CreatePrivateKeyInfo(keyPair.Private);if (!format){return new RSAKeyParameter{PrivateKey Base64.ToBase64String(privateKeyInfo.ParsePrivateKey().GetEncoded()),PublicKey Base64.ToBase64String(subjectPublicKeyInfo.GetEncoded())};}var rsaKey new RSAKeyParameter();using (var sw new StringWriter()){var pWrt new PemWriter(sw);pWrt.WriteObject(keyPair.Private);pWrt.Writer.Close();rsaKey.PrivateKey sw.ToString();}using (var sw new StringWriter()){var pWrt new PemWriter(sw);pWrt.WriteObject(keyPair.Public);pWrt.Writer.Close();rsaKey.PublicKey sw.ToString();}return rsaKey;}PKCS8格式/// summary/// PKCS8JAVA适用/// /summary/// param namekeySize密钥长度”一般只是指模值的位长度。目前主流可选值1024、2048、3072、4096.../param/// param nameformatPEM格式/param/// returns/returnspublic RSAKeyParameter Pkcs8(int keySize, bool formatfalse){var keyGenerator GeneratorUtilities.GetKeyPairGenerator(RSA);keyGenerator.Init(new KeyGenerationParameters(new SecureRandom(), keySize));var keyPair keyGenerator.GenerateKeyPair();var subjectPublicKeyInfo SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(keyPair.Public);var privateKeyInfo PrivateKeyInfoFactory.CreatePrivateKeyInfo(keyPair.Private);if (!format){return new RSAKeyParameter{PrivateKey Base64.ToBase64String(privateKeyInfo.GetEncoded()),PublicKey Base64.ToBase64String(subjectPublicKeyInfo.GetEncoded())};}var rsaKey new RSAKeyParameter();using (var sw new StringWriter()){var pWrt new PemWriter(sw);var pkcs8 new Pkcs8Generator(keyPair.Private);pWrt.WriteObject(pkcs8);pWrt.Writer.Close();rsaKey.PrivateKey sw.ToString();}using (var sw new StringWriter()){var pWrt new PemWriter(sw);pWrt.WriteObject(keyPair.Public);pWrt.Writer.Close();rsaKey.PublicKey sw.ToString();}return rsaKey;}私钥操作PKCS1与PKCS8格式互转仅私钥有PKCS1和PKCS8之分公钥无格式区别。/// summary/// Pkcs1Pkcs8/// /summary/// param nameprivateKeyPkcs1私钥/param/// param nameformat是否转PEM格式/param/// returns/returnspublic static string PrivateKeyPkcs1ToPkcs8(string privateKey, bool format false){var akp RSAUtilities.GetAsymmetricKeyParameterFormPrivateKey(privateKey);if (format){var sw new StringWriter();var pWrt new PemWriter(sw);var pkcs8 new Pkcs8Generator(akp);pWrt.WriteObject(pkcs8);pWrt.Writer.Close();return sw.ToString();}else{var privateKeyInfo PrivateKeyInfoFactory.CreatePrivateKeyInfo(akp);return Base64.ToBase64String(privateKeyInfo.GetEncoded());}}/// summary/// Pkcs8Pkcs1/// /summary/// param nameprivateKeyPkcs8私钥/param/// param nameformat是否转PEM格式/param/// returns/returnspublic static string PrivateKeyPkcs8ToPkcs1(string privateKey, bool format false){var akp RSAUtilities.GetAsymmetricKeyParameterFormAsn1PrivateKey(privateKey);if (format){var sw new StringWriter();var pWrt new PemWriter(sw);pWrt.WriteObject(akp);pWrt.Writer.Close();return sw.ToString();}else{var privateKeyInfo PrivateKeyInfoFactory.CreatePrivateKeyInfo(akp);return Base64.ToBase64String(privateKeyInfo.ParsePrivateKey().GetEncoded());}}PKCS1与PKCS8私钥中提取公钥/// summary/// 从Pkcs1私钥中提取公钥/// /summary/// param nameprivateKeyPkcs1私钥/param/// returns/returnspublic static string GetPublicKeyFromPrivateKeyPkcs1(string privateKey){var instance RsaPrivateKeyStructure.GetInstance(Base64.Decode(privateKey));var publicParameter (AsymmetricKeyParameter)new RsaKeyParameters(false, instance.Modulus,instance.PublicExponent);var privateParameter (AsymmetricKeyParameter)new RsaPrivateCrtKeyParameters(instance.Modulus,instance.PublicExponent, instance.PrivateExponent, instance.Prime1, instance.Prime2, instance.Exponent1,instance.Exponent2, instance.Coefficient);var keyPair new AsymmetricCipherKeyPair(publicParameter, privateParameter);var subjectPublicKeyInfo SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(keyPair.Public);return Base64.ToBase64String(subjectPublicKeyInfo.GetEncoded());}/// summary/// 从Pkcs8私钥中提取公钥/// /summary/// param nameprivateKeyPkcs8私钥/param/// returns/returnspublic static string GetPublicKeyFromPrivateKeyPkcs8(string privateKey){var privateKeyInfo PrivateKeyInfo.GetInstance(Asn1Object.FromByteArray(Base64.Decode(privateKey)));privateKey Base64.ToBase64String(privateKeyInfo.ParsePrivateKey().GetEncoded());var instance RsaPrivateKeyStructure.GetInstance(Base64.Decode(privateKey));var publicParameter (AsymmetricKeyParameter)new RsaKeyParameters(false, instance.Modulus,instance.PublicExponent);var privateParameter (AsymmetricKeyParameter)new RsaPrivateCrtKeyParameters(instance.Modulus,instance.PublicExponent, instance.PrivateExponent, instance.Prime1, instance.Prime2, instance.Exponent1,instance.Exponent2, instance.Coefficient);var keyPair new AsymmetricCipherKeyPair(publicParameter, privateParameter);var subjectPublicKeyInfo SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(keyPair.Public);return Base64.ToBase64String(subjectPublicKeyInfo.GetEncoded());}PEM操作PEM格式密钥读取public static string ReadPkcs1PrivateKey(string text){if (!text.StartsWith(-----BEGIN RSA PRIVATE KEY-----)){return text;}using (var reader new StringReader(text)){var pr new PemReader(reader);var keyPair pr.ReadObject() as AsymmetricCipherKeyPair;pr.Reader.Close();var privateKeyInfo PrivateKeyInfoFactory.CreatePrivateKeyInfo(keyPair?.Private);return Base64.ToBase64String(privateKeyInfo.ParsePrivateKey().GetEncoded());}}public static string ReadPkcs8PrivateKey(string text){if (!text.StartsWith(-----BEGIN PRIVATE KEY-----)){return text;}using (var reader new StringReader(text)){var pr new PemReader(reader);var akp pr.ReadObject() as AsymmetricKeyParameter; ;pr.Reader.Close();return Base64.ToBase64String(PrivateKeyInfoFactory.CreatePrivateKeyInfo(akp).GetEncoded());}}public static string ReadPublicKey(string text){if (!text.StartsWith(-----BEGIN PUBLIC KEY-----)){return text;}using (var reader new StringReader(text)){var pr new PemReader(reader);var keyPair pr.ReadObject() as AsymmetricCipherKeyPair;pr.Reader.Close();var subjectPublicKeyInfo SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(keyPair?.Public);returnBase64.ToBase64String(subjectPublicKeyIno.GetEncoded());}}PEM格式密钥写入public static string WritePkcs1PrivateKey(string privateKey){if (privateKey.StartsWith(-----BEGIN RSA PRIVATE KEY-----)){return privateKey;}var akp RSAUtilities.GetAsymmetricKeyParameterFormPrivateKey(privateKey);using (var sw new StringWriter()){var pWrt new PemWriter(sw);pWrt.WriteObject(akp);pWrt.Writer.Close();return sw.ToString();}}public static string WritePkcs8PrivateKey(string privateKey){if (privateKey.StartsWith(-----BEGIN PRIVATE KEY-----)){return privateKey;}var akp RSAUtilities.GetAsymmetricKeyParameterFormAsn1PrivateKey(privateKey);using (var sw new StringWriter()){var pWrt new PemWriter(sw);var pkcs8 new Pkcs8Generator(akp);pWrt.WriteObject(pkcs8);pWrt.Writer.Close();return sw.ToString();}}public static string WritePublicKey(string publicKey){if (publicKey.StartsWith(-----BEGIN PUBLIC KEY-----)){return publicKey;}var akp RSAUtilities.GetAsymmetricKeyParameterFormPublicKey(publicKey);using (var sw new StringWriter()){var pWrt new PemWriter(sw);pWrt.WriteObject(akp);pWrt.Writer.Close();return sw.ToString();}}RSA加解密获取非对称秘钥参数AsymmetricKeyParameter/// summary/// -----BEGIN RSA PRIVATE KEY-----/// .../// -----END RSA PRIVATE KEY-----/// /summary/// param nameprivateKeyPkcs1格式私钥/param/// returns/returnspublic static AsymmetricKeyParameter GetAsymmetricKeyParameterFormPrivateKey(string privateKey){if (string.IsNullOrEmpty(privateKey)){throw new ArgumentNullException(nameof(privateKey));}var instance RsaPrivateKeyStructure.GetInstance(Base64.Decode(privateKey));return new RsaPrivateCrtKeyParameters(instance.Modulus, instance.PublicExponent, instance.PrivateExponent,instance.Prime1, instance.Prime2, instance.Exponent1, instance.Exponent2, instance.Coefficient);}/// summary/// -----BEGIN PRIVATE KEY-----/// .../// -----END PRIVATE KEY-----/// /summary/// param nameprivateKeyPkcs8格式私钥/param/// returns/returnspublic static AsymmetricKeyParameter GetAsymmetricKeyParameterFormAsn1PrivateKey(string privateKey){return PrivateKeyFactory.CreateKey(Base64.Decode(privateKey));}/// summary/// -----BEGIN PUBLIC KEY-----/// .../// -----END PUBLIC KEY-----/// /summary/// param namepublicKey公钥/param/// returns/returnspublic static AsymmetricKeyParameter GetAsymmetricKeyParameterFormPublicKey(string publicKey){if (string.IsNullOrEmpty(publicKey)){throw new ArgumentNullException(nameof(publicKey));}return PublicKeyFactory.CreateKey(Base64.Decode(publicKey));}RSA加解与解密/// summary/// RSA加密/// /summary/// param namedata未加密数据字节数组/param/// param nameparameters非对称密钥参数/param/// param namealgorithm密文算法/param/// returns已加密数据字节数组/returnspublic static byte[] Encrypt(byte[] data, AsymmetricKeyParameter parameters, string algorithm){if (data null){throw new ArgumentNullException(nameof(data));}if (parameters null){throw new ArgumentNullException(nameof(parameters));}if (string.IsNullOrEmpty(algorithm)){throw new ArgumentNullException(nameof(algorithm));}var bufferedCipher CipherUtilities.GetCipher(algorithm);bufferedCipher.Init(true, parameters);return bufferedCipher.DoFinal(data);}/// summary/// RSA解密/// /summary/// param namedata已加密数据字节数组/param/// param nameparameters非对称密钥参数/param/// param namealgorithm密文算法/param/// returns未加密数据字节数组/returnspublic static byte[] Decrypt(byte[] data, AsymmetricKeyParameter parameters, string algorithm){if (data null){throw new ArgumentNullException(nameof(data));}if (parameters null){throw new ArgumentNullException(nameof(parameters));}if (string.IsNullOrEmpty(algorithm)){throw new ArgumentNullException(nameof(algorithm));}var bufferedCipher CipherUtilities.GetCipher(algorithm);bufferedCipher.Init(false, parameters);return bufferedCipher.DoFinal(data);}/// summary/// RSA加密——Base64/// /summary/// param namedata未加密字符串/param/// param nameparameters非对称密钥参数/param/// param namealgorithm密文算法/param/// returns已加密Base64字符串/returnspublic static string EncryptToBase64(string data, AsymmetricKeyParameter parameters, string algorithm){return Base64.ToBase64String(Encrypt(Encoding.UTF8.GetBytes(data), parameters, algorithm));}/// summary/// RSA解密——Base64/// /summary/// param namedata已加密Base64字符串/param/// param nameparameters非对称密钥参数/param/// param namealgorithm密文算法/param/// returns未加密字符串/returnspublic static string DecryptFromBase64(string data, AsymmetricKeyParameter parameters, string algorithm){return Encoding.UTF8.GetString(Decrypt(Base64.Decode(data), parameters, algorithm));}/// summary/// RSA加密——十六进制/// /summary/// param namedata未加密字符串/param/// param nameparameters非对称密钥参数/param/// param namealgorithm密文算法/param/// returns已加密十六进制字符串/returnspublic static string EncryptToHex(string data, AsymmetricKeyParameter parameters, string algorithm){return Hex.ToHexString(Encrypt(Encoding.UTF8.GetBytes(data), parameters, algorithm));}/// summary/// RSA解密——十六进制/// /summary/// param namedata已加密十六进制字符串/param/// param nameparameters非对称密钥参数/param/// param namealgorithm密文算法/param/// returns未加密字符串/returnspublic static string DecryptFromHex(string data, AsymmetricKeyParameter parameters, string algorithm){return Encoding.UTF8.GetString(Decrypt(Hex.Decode(data), parameters, algorithm));}RSA密文算法public const string RSA_NONE_NoPadding RSA/NONE/NoPadding;public const string RSA_NONE_PKCS1Padding RSA/NONE/PKCS1Padding;public const string RSA_NONE_OAEPPadding RSA/NONE/OAEPPadding;public const string RSA_NONE_OAEPWithSHA1AndMGF1Padding RSA/NONE/OAEPWithSHA1AndMGF1Padding;public const string RSA_NONE_OAEPWithSHA224AndMGF1Padding RSA/NONE/OAEPWithSHA224AndMGF1Padding;public const string RSA_NONE_OAEPWithSHA256AndMGF1Padding RSA/NONE/OAEPWithSHA256AndMGF1Padding;public const string RSA_NONE_OAEPWithSHA384AndMGF1Padding RSA/NONE/OAEPWithSHA384AndMGF1Padding;public const string RSA_NONE_OAEPWithMD5AndMGF1Padding RSA/NONE/OAEPWithMD5AndMGF1Padding;public const string RSA_ECB_NoPadding RSA/ECB/NoPadding;public const string RSA_ECB_PKCS1Padding RSA/ECB/PKCS1Padding;public const string RSA_ECB_OAEPPadding RSA/ECB/OAEPPadding;public const string RSA_ECB_OAEPWithSHA1AndMGF1Padding RSA/ECB/OAEPWithSHA1AndMGF1Padding;public const string RSA_ECB_OAEPWithSHA224AndMGF1Padding RSA/ECB/OAEPWithSHA224AndMGF1Padding;public const string RSA_ECB_OAEPWithSHA256AndMGF1Padding RSA/ECB/OAEPWithSHA256AndMGF1Padding;public const string RSA_ECB_OAEPWithSHA384AndMGF1Padding RSA/ECB/OAEPWithSHA384AndMGF1Padding;public const string RSA_ECB_OAEPWithMD5AndMGF1Padding RSA/ECB/OAEPWithMD5AndMGF1Padding;......编码算法大家要明白不管是对称算法还是非对称算法其输入与输出均是字节数组通常我们要结合编码算法对加密之后或解密之前的数据进行编码操作。BouncyCastle提供的Base64编码算法namespace Org.BouncyCastle.Utilities.Encoders{public sealed class Base64{//public static byte[] Decode(byte[] data);//public static byte[] Decode(string data);//public static int Decode(string data, Stream outStream);//public static byte[] Encode(byte[] data);//public static byte[] Encode(byte[] data, int off, int length);//public static int Encode(byte[] data, Stream outStream);//public static int Encode(byte[] data, int off, int length, Stream outStream);public static string ToBase64String(byte[] data);public static string ToBase64String(byte[] data, int off, int length);}}BouncyCastle提供的Hex十六进制编码算法namespace Org.BouncyCastle.Utilities.Encoders{//// 摘要:// Class to decode and encode Hex.public sealed class Hex{//public static byte[] Decode(byte[] data);//public static byte[] Decode(string data);//public static int Decode(string data, Stream outStream);//public static byte[] Encode(byte[] data);//public static byte[] Encode(byte[] data, int off, int length);//public static int Encode(byte[] data, Stream outStream);//public static int Encode(byte[] data, int off, int length, Stream outStream);public static string ToHexString(byte[] data);public static string ToHexString(byte[] data, int off, int length);}}RSA加解密示例private static void RSA_ECB_PKCS1Padding(){var data hello rsa;Console.WriteLine($加密原文{data});// rsa pkcs8 private key encrypt//algorithm rsa/ecb/pkcs1paddingvar pkcs8data RSA.EncryptToBase64(data, RSAUtilities.GetAsymmetricKeyParameterFormAsn1PrivateKey(pkcs8_1024_private_key),CipherAlgorithms.RSA_ECB_PKCS1Padding);Console.WriteLine(密钥格式pkcs8密文算法rsa/ecb/pkcs1padding加密结果);Console.WriteLine(pkcs8data);//rsa pkcs1 private key encrypt//algorithm rsa/ecb/pkcs1paddingvar pkcs1data RSA.EncryptToBase64(data, RSAUtilities.GetAsymmetricKeyParameterFormPrivateKey(pkcs1_1024_private_key),CipherAlgorithms.RSA_ECB_PKCS1Padding);Console.WriteLine($密钥格式pkcs1密文算法rsa/ecb/pkcs1padding);Console.WriteLine(pkcs1data);Console.WriteLine($加密结果比对是否一致{pkcs8data.Equals(pkcs1data)});var _1024_public_key RSAKeyConverter.GetPublicKeyFromPrivateKeyPkcs1(pkcs1_1024_private_key);Console.WriteLine($从pkcs1私钥中提取公钥);Console.WriteLine(_1024_public_key);Console.WriteLine(使用公钥解密数据);//rsa public key decrypt//algorithm rsa/ecb/pkcs1paddingConsole.WriteLine(RSA.DecryptFromBase64(pkcs1data, RSAUtilities.GetAsymmetricKeyParameterFormPublicKey(_1024_public_key),CipherAlgorithms.RSA_ECB_PKCS1Padding));Console.WriteLine();}下期预告下一篇将介绍哈希算法HMACSHA1、HMACSHA256、SHA1、SHA1WithRSA、SHA256、SHA256WithRSA敬请期待…
http://www.pierceye.com/news/818880/

相关文章:

  • 在那个上面做网站都能搜到新乡网站建设设计
  • 网站编辑 seo是什么 百度知道本地网站搭建流程
  • 用凡科做网站好吗搜索自媒体平台
  • 学设计的网站有哪些内容免费设计图片软件
  • 柳州建站公司404错误直接转向到网站首页
  • 字画网站建设iis怎么查看网站的域名
  • 公司门户网站建设特点新增专业建设规划
  • 备案号怎么放置到网站长春如何建立一个平台网站
  • 企业网站的一般要素包括厂房设计
  • 郑州做网站 汉狮网络深圳市中心是哪个区
  • jsp做的婚恋网站做死活题网站
  • 帮做网站的公司荥阳网站优化公司
  • 网页设计心得体会正文合肥网站推广优化公司
  • 邯郸菜鸟网站建设网站搭建费用价格表
  • 网站优化3个关键词和10个关键词的区别品牌推广方式有哪些
  • 建立网站需要多少钱一个二手站网站怎做
  • 瑞丽住建局网站科技新闻最新消息10条
  • 可以上传网站的免费空间网站注册都需要什么
  • wap网站开发重庆永川网站建设公司
  • 网站历史记录怎么恢复seo网站优化软件
  • 四川瑞通工程建设有限公司网站贵州省网站建设
  • 购买网站设计制作易龙天做的网站怎么样
  • 十大免费网站推广入口无锡网站建设首选捷搜
  • 网站搭建原理网页制作工程师
  • 中国工程建设交易信息网站邢台百度爱采购
  • 保定建设网站公司qq登陆 wordpress
  • 博客网站开发环境专业外贸网站建设公司价格
  • 响应式电商网站制作企业咨询诊断报告
  • 企业网站怎么建设公司展厅装修设计
  • 怎么联系网站管理员怎么做拍卖网站