using Furion.FriendlyException; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; namespace Ewide.Core.Util { public static class RSAHandler { /// /// 生成公私钥 /// /// /// public static void RSAKey(string PrivateKeyPath, string PublicKeyPath) { RSACryptoServiceProvider provider = new RSACryptoServiceProvider(); CreatePrivateKeyXML(PrivateKeyPath, provider.ToXmlString(true)); CreatePublicKeyXML(PublicKeyPath, provider.ToXmlString(false)); } /// /// 创建公钥文件 /// /// /// public static void CreatePublicKeyXML(string path, string publickey) { using (FileStream publickeyxml = new FileStream(path, FileMode.Create)) { using (StreamWriter sw = new StreamWriter(publickeyxml)) { sw.WriteLine(publickey); } } } /// /// 创建私钥文件 /// /// /// public static void CreatePrivateKeyXML(string path, string privatekey) { using (FileStream privatekeyxml = new FileStream(path, FileMode.Create)) { using (StreamWriter sw = new StreamWriter(privatekeyxml)) { sw.WriteLine(privatekey); } } } /// /// RSA加密 /// /// /// public static string RSAEncrypt(string content) { string publickey = @"tu98wMoo297l+juulU4a3Xx7c2SZ93f0gTPKohE0uz4o8jWN8zXnAAfhf6MMTlkgf+qIwaORLtBQohDcX6Xp02Qe7Cq2LujVR+YJHxy2uo8+KTc5Rj/d0OkTjeCozGaJQH0XrwUO7w+rDnyXzA52IvMZPnUV3KnOj1mPH0IhrOU=AQAB"; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); byte[] cipherbytes; rsa.FromXmlString(publickey); cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(content), false); return Convert.ToBase64String(cipherbytes); } /// /// RSA解密 /// /// /// public static string RSADecrypt(string content) { string privatekey = @"tu98wMoo297l+juulU4a3Xx7c2SZ93f0gTPKohE0uz4o8jWN8zXnAAfhf6MMTlkgf+qIwaORLtBQohDcX6Xp02Qe7Cq2LujVR+YJHxy2uo8+KTc5Rj/d0OkTjeCozGaJQH0XrwUO7w+rDnyXzA52IvMZPnUV3KnOj1mPH0IhrOU=AQAB

7yKLJO9dobe7pNW3ob+Vse8kvlA+PObDrZNqFxUTLyXoAeHDnwz3BjJ2EVUPNJHV5F1/KPLTvADIjDrdB1qcbw==

w9ZK0SHBddtE91skFFS72YDmxzmXumSuUyREStVul9ke0oU2HjcZA915bmR0Zrh1RzO3y1w9zXVn+GdZGjyd6w==ncA67E2fhcwv0+hMcD5zYOLyaT2EISbWFQ43ISz879BgwcUOCEFEP+lP69Uh57sAz9pBxWCS/uXBZoh6QJysrw==vbC8F4YS1g3l55Koh+jra+qnnyHyDeGn2XCvlazWys7MRC40FWBZIp1MGdnDxhu1vZoi1SAr3O90HfA9JmTAsQ==00v2vMCcgXy78eMby7R6zfZzacVnVFO2WeyxYF7pjrXYYP+C4JSJkWpy6JGLWbgZrK8HAuRguJmdRi8K2KiYWg==rV3nb9nmwQDMGMrI2GyN30uivygfFj0TdgK8Tb1aqPzu1yRT46M4yXmuhkTiW7nxp+iANGssIx5+3Ch4gRj+r6BgBPldWNErK95a2v2Ae1+EzfVf21ybguBYeUVnV9c8qwoodZSVOajZapOgoS6s5TEOxHWRcF22AiFuaD1Tl90=
"; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); byte[] cipherbytes; try { //很有可能是报文被修改 情况很小 rsa.FromXmlString(privatekey); cipherbytes = rsa.Decrypt(Convert.FromBase64String(content), false); return Encoding.UTF8.GetString(cipherbytes); } catch { throw Oops.Oh(ErrorCode.D1000); } } } }