加入测试,要求aes加密为不稳定加密。及相同条件每次加密出结果不同

This commit is contained in:
falcon 2020-04-12 17:23:54 +08:00
parent 3f1abae89b
commit d49a44384c
2 changed files with 21 additions and 2 deletions

View File

@ -19,13 +19,13 @@ namespace Falcon.Extend
public string Encrypt(string content,string key) { public string Encrypt(string content,string key) {
var encryptKey = GetDecryptKey(key); var encryptKey = GetDecryptKey(key);
using(var aesAlg = Aes.Create()) { using(var aesAlg = Aes.Create()) {
using(var encryptor = aesAlg.CreateEncryptor(encryptKey,aesAlg.IV)) { var iv = aesAlg.IV;
using(var encryptor = aesAlg.CreateEncryptor(encryptKey,iv)) {
using(var msEncrypt = new MemoryStream()) { using(var msEncrypt = new MemoryStream()) {
using(var csEncrypt = new CryptoStream(msEncrypt,encryptor,CryptoStreamMode.Write)) using(var csEncrypt = new CryptoStream(msEncrypt,encryptor,CryptoStreamMode.Write))
using(var swEncrypt = new StreamWriter(csEncrypt)) { using(var swEncrypt = new StreamWriter(csEncrypt)) {
swEncrypt.Write(content); swEncrypt.Write(content);
} }
var iv = aesAlg.IV;
var decryptedContent = msEncrypt.ToArray(); var decryptedContent = msEncrypt.ToArray();
var result = new byte[iv.Length + decryptedContent.Length]; var result = new byte[iv.Length + decryptedContent.Length];
Buffer.BlockCopy(iv,0,result,0,iv.Length); Buffer.BlockCopy(iv,0,result,0,iv.Length);

View File

@ -9,6 +9,9 @@ namespace Falcon.Extend.Tests
[TestClass()] [TestClass()]
public class AESCryptoServiceTests public class AESCryptoServiceTests
{ {
/// <summary>
/// 测试可用性
/// </summary>
[TestMethod()] [TestMethod()]
public void EncryptTest() { public void EncryptTest() {
ICryptoService service = new AESCryptoService(); ICryptoService service = new AESCryptoService();
@ -24,5 +27,21 @@ namespace Falcon.Extend.Tests
} }
} }
} }
/// <summary>
/// 测试加密稳定性
/// </summary>
[TestMethod()]
public void EncryptTest2() {
ICryptoService service = new AESCryptoService();
var m = "aaaaa";
var k = "abcd";
var m1 = service.Encrypt(m,k);
var m2 = service.Encrypt(m,k);
Assert.AreNotEqual(m1,m2);
var m3 = service.Decrypt(m1,k);
var m4 = service.Decrypt(m2,k);
Assert.AreEqual(m3,m4);
Assert.AreEqual(m,m3);
}
} }
} }