From cbfabdc5d42e258970826e93e8dce33928f4239d Mon Sep 17 00:00:00 2001 From: SmallChi <564952747@qq.com> Date: Mon, 11 Jun 2018 13:35:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0AES128=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GBNewEnergy.Protocol.csproj | 2 + src/GBNewEnergy.Protocol/NEEncryptFactory.cs | 6 +-- .../NEEncrypts/NEAES128EncryptImpl.cs | 50 ++++++++----------- src/GBNewEnergy.Protocol/NEGlobalConfigs.cs | 4 -- .../NEEncryptsNETCore.Test/Program.cs | 4 +- 5 files changed, 26 insertions(+), 40 deletions(-) diff --git a/src/GBNewEnergy.Protocol/GBNewEnergy.Protocol.csproj b/src/GBNewEnergy.Protocol/GBNewEnergy.Protocol.csproj index 58b2083..09a6046 100644 --- a/src/GBNewEnergy.Protocol/GBNewEnergy.Protocol.csproj +++ b/src/GBNewEnergy.Protocol/GBNewEnergy.Protocol.csproj @@ -9,6 +9,8 @@ + + diff --git a/src/GBNewEnergy.Protocol/NEEncryptFactory.cs b/src/GBNewEnergy.Protocol/NEEncryptFactory.cs index 029b40a..cf18c6a 100644 --- a/src/GBNewEnergy.Protocol/NEEncryptFactory.cs +++ b/src/GBNewEnergy.Protocol/NEEncryptFactory.cs @@ -17,11 +17,7 @@ namespace GBNewEnergy.Protocol case NEEncryptMethod.Exception: return null; case NEEncryptMethod.AES128: -#if NETCOREAPP2_1 - return new NE_AES128EncryptImpl_NetCore2(nEConfigs); -#else - return new NEAES128EncryptImpl(nEConfigs); -#endif + return new NEAES128EncryptImpl(nEConfigs); case NEEncryptMethod.RSA: return new NERSAEncryptImpl(nEConfigs); default: diff --git a/src/GBNewEnergy.Protocol/NEEncrypts/NEAES128EncryptImpl.cs b/src/GBNewEnergy.Protocol/NEEncrypts/NEAES128EncryptImpl.cs index 6120c82..8508e70 100644 --- a/src/GBNewEnergy.Protocol/NEEncrypts/NEAES128EncryptImpl.cs +++ b/src/GBNewEnergy.Protocol/NEEncrypts/NEAES128EncryptImpl.cs @@ -21,22 +21,17 @@ namespace GBNewEnergy.Protocol.NEEncrypts } public byte[] Encrypt(byte[] buffer) - { - using (var ms = new MemoryStream()) + { + using (Aes encryptor = Aes.Create()) { - using (var AES = new RijndaelManaged()) - { - AES.KeySize = 256; - AES.BlockSize = 128; - var key = new Rfc2898DeriveBytes(_nEConfigs.NEEncryptKeyBytes, saltBytes, 1000); - AES.Key = key.GetBytes(32); - AES.IV = key.GetBytes(16); - AES.Mode = CipherMode.CBC; - using (var cs = new CryptoStream(ms, AES.CreateEncryptor(), CryptoStreamMode.Write)) - { - cs.Write(buffer, 0, buffer.Length); - cs.Close(); - } + Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(_nEConfigs.NEEncryptKey, saltBytes); + encryptor.Key = pdb.GetBytes(32); + encryptor.IV = pdb.GetBytes(16); + using (MemoryStream ms = new MemoryStream()) + using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(),CryptoStreamMode.Write)) + { + cs.Write(buffer, 0, buffer.Length); + cs.Close(); return ms.ToArray(); } } @@ -44,22 +39,19 @@ namespace GBNewEnergy.Protocol.NEEncrypts public byte[] Decrypt(byte[] buffer) { - using (var ms = new MemoryStream()) - using (var AES = new RijndaelManaged()) + using (Aes encryptor = Aes.Create()) { - AES.KeySize = 256; - AES.BlockSize = 128; - var key = new Rfc2898DeriveBytes(_nEConfigs.NEEncryptKeyBytes, saltBytes, 1000); - AES.Key = key.GetBytes(32); - AES.IV = key.GetBytes(16); - AES.Mode = CipherMode.CBC; - using (var cs = new CryptoStream(ms, AES.CreateDecryptor(), CryptoStreamMode.Write)) - { - cs.Write(buffer, 0, buffer.Length); - cs.Close(); - } + Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(_nEConfigs.NEEncryptKey, saltBytes); + encryptor.Key = pdb.GetBytes(32); + encryptor.IV = pdb.GetBytes(16); + using (MemoryStream ms = new MemoryStream()) + using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateDecryptor(),CryptoStreamMode.Write)) + { + cs.Write(buffer, 0, buffer.Length); + cs.Close(); return ms.ToArray(); - } + } + } } } } diff --git a/src/GBNewEnergy.Protocol/NEGlobalConfigs.cs b/src/GBNewEnergy.Protocol/NEGlobalConfigs.cs index fca9978..09ed2bb 100644 --- a/src/GBNewEnergy.Protocol/NEGlobalConfigs.cs +++ b/src/GBNewEnergy.Protocol/NEGlobalConfigs.cs @@ -12,10 +12,6 @@ namespace GBNewEnergy.Protocol /// public string NEEncryptKey { get; set; } /// - /// 密钥 - /// - public byte[] NEEncryptKeyBytes => Encoding.UTF8.GetBytes(NEEncryptKey); - /// /// 数据单元加密方式 /// 0x01:数据不加密;0x02:数据经过 RSA 算法加密;0x03:数据经过 AES128 位算法加密;“0xFE”表示异常,“0xFF”表示无效 /// diff --git a/src/NEEncrypts.Tests/NEEncryptsNETCore.Test/Program.cs b/src/NEEncrypts.Tests/NEEncryptsNETCore.Test/Program.cs index cfeeadb..1fad826 100644 --- a/src/NEEncrypts.Tests/NEEncryptsNETCore.Test/Program.cs +++ b/src/NEEncrypts.Tests/NEEncryptsNETCore.Test/Program.cs @@ -14,12 +14,12 @@ namespace NEEncryptsNETCore.Test { NEEncryptKey = "smallchi" }); - string str =Guid.NewGuid().ToString("N"); + string str ="aaaaaa111111"; var bytes = Encoding.UTF8.GetBytes(str); var encrypt = nE_AES128EncryptImpl.Encrypt(bytes); Console.WriteLine("原数据:" + str); Console.WriteLine("加密后:" + encrypt.ToHexString()); - Console.WriteLine("解密后:" + Encoding.UTF8.GetString(nE_AES128EncryptImpl.Decrypt(encrypt))); + Console.WriteLine("解密后:" + Encoding.ASCII.GetString(nE_AES128EncryptImpl.Decrypt(encrypt))); Console.ReadKey(); } }