/// <summary> /// RSA 加密,解密,签名和验签 /// </summary> public static void RSASignFunc(string privateKey, string publicKey, EnumUserType enumUserType) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); switch (enumUserType) { case EnumUserType.xml: RsaXmlUtil rsaXmlUtil = new RsaXmlUtil(Encoding.UTF8, publicKey, privateKey); var encrypt = rsaXmlUtil.Encrypt("123456789", RSAEncryptionPadding.Pkcs1); var encryptInput = rsaXmlUtil.Decrypt(encrypt, RSAEncryptionPadding.Pkcs1); Console.Write("XML加解密是否成功:"); Console.WriteLine(encryptInput is "123456789"); var sign = rsaXmlUtil.SignData("987654321", HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1); var verifyData = rsaXmlUtil.VerifyData("987654321", sign, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1); Console.Write("XML签名是否成功"); Console.WriteLine(verifyData); break; case EnumUserType.pkcs1: RsaPkcs1Util rsaPkcs1Util = new RsaPkcs1Util(Encoding.UTF8, publicKey, privateKey); var encrypt2 = rsaPkcs1Util.Encrypt("123456789", RSAEncryptionPadding.Pkcs1); var encryptInput2 = rsaPkcs1Util.Decrypt(encrypt2, RSAEncryptionPadding.Pkcs1); Console.Write("PKCS1加解密是否成功:"); Console.WriteLine(encryptInput2 is "123456789"); var sign2 = rsaPkcs1Util.SignData("987654321", HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1); var verifyData2 = rsaPkcs1Util.VerifyData("987654321", sign2, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1); Console.Write("PKCS1签名是否成功"); Console.WriteLine(verifyData2); break; default: RsaPkcs8Util rsaPkcs8Util = new RsaPkcs8Util(Encoding.UTF8, publicKey, privateKey); var encrypt3 = rsaPkcs8Util.Encrypt("123456789", RSAEncryptionPadding.Pkcs1); var encryptInput3 = rsaPkcs8Util.Decrypt(encrypt3, RSAEncryptionPadding.Pkcs1); Console.Write("PKCS8加解密是否成功:"); Console.WriteLine(encryptInput3 is "123456789"); var sign3 = rsaPkcs8Util.SignData("987654321", HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1); var verifyData3 = rsaPkcs8Util.VerifyData("987654321", sign3, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1); Console.Write("PKCS8签名是否成功"); Console.WriteLine(verifyData3); break; } }
private static void Main(string[] args) { var input = ",130680807779,"; // 取匹配 var matches = Regex.Matches(input, @"(1)\d{10}") .Select(m => m.Value) .ToList(); matches = Regex.Matches(",1306808077701234,", @"(1)\d{10,20}") .Select(m => m.Value) .ToList(); matches = Regex.Matches("17703430350,,", @"(1)\d{10,20}") .Select(m => m.Value) .ToList(); Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var str = "筷开动1234Abc"; var gbk = Encoding.GetEncoding("GBK").GetBytes(str); var gbkToStr = Encoding.GetEncoding("GBK").GetString(gbk); Console.WriteLine($"GBK是否相同:{str == gbkToStr}\n"); Console.WriteLine("获取Ticks测试------start-------"); for (var i = 0; i < 10; i++) { var ticks = DateTime.Now.Ticks.ToString(); Console.WriteLine($" {i} ticks:{ticks} len:{ticks.Length}"); } Console.WriteLine("获取Ticks测试------end-------"); var keyList = RsaKeyGenerator.XmlKey(2048); var privateKey = keyList[0]; var publicKey = keyList[1]; var source = "1234再看看看!@#¥#!#"; var rsaXmlUtil = new RsaXmlUtil(Encoding.UTF8, publicKey, privateKey); var encryptData = rsaXmlUtil.Encrypt(source, RSAEncryptionPadding.OaepSHA256); Console.WriteLine("加密测试:"); Console.WriteLine(" 加密后的数据:{0}", encryptData); var decryptData = rsaXmlUtil.Decrypt(encryptData, RSAEncryptionPadding.OaepSHA256); Console.WriteLine("\n 解密后的数据:{0}", decryptData); Console.WriteLine(" 解密后的数据与源数据相同:{0}", source == decryptData); Console.WriteLine("\n签名测试:"); var signData = rsaXmlUtil.SignData(source, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1); Console.WriteLine(" 签名值:{0}", signData); var verifyRet = rsaXmlUtil.VerifyData(source, signData, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1); Console.WriteLine(" 验证签名:{0}", verifyRet); Console.WriteLine("\n签名转换:"); var privatePkcs1 = RsaKeyConvert.PrivateKeyXmlToPkcs1(privateKey); var publicPkcs1 = RsaKeyConvert.PublicKeyXmlToPem(publicKey); Console.WriteLine(" private key of Pkcs1:{0}", privatePkcs1); Console.WriteLine(" public key of Pkcs1:{0}", publicPkcs1); Console.WriteLine("Guid转换String测试.---开始---"); var id = Guid.NewGuid(); var idString = id.ToString("N"); Console.WriteLine("Guid.ToString(N)={0},原guid:{1}", idString, id); var idFromString = Guid.ParseExact(idString, "N"); Console.WriteLine("Guid.ParseExact(idString,N):{0} ,是否相等:{1}", idFromString, idFromString == id); Console.WriteLine("Guid转换String测试.---结束。"); Console.ReadLine(); }