CryptographyUtilsTest.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using System.Security.Cryptography;
  2. namespace MeloongCore.Tests;
  3. public class CryptographyUtilsTest : TestBase {
  4. #region 对称加密
  5. [Test]
  6. [Arguments("")]
  7. [Arguments("PCL")]
  8. [Arguments("中文内容 Test 123 !@#$%^&*()")]
  9. public async Task 对称加密_往返(string sourceString) {
  10. string encryptedString = CryptographyUtils.AesEncrypt(sourceString, "PCL-Key-中文");
  11. await Assert.That(encryptedString != sourceString).IsTrue();
  12. await Assert.That(CryptographyUtils.AesDecrypt(encryptedString, "PCL-Key-中文")).IsEqualTo(sourceString);
  13. }
  14. [Test]
  15. public async Task 对称加密_随机化()
  16. => await Assert.That(CryptographyUtils.AesEncrypt("same source", "same key") != CryptographyUtils.AesEncrypt("same source", "same key")).IsTrue();
  17. [Test]
  18. public void 对称加密_篡改失败() {
  19. byte[] encryptedBytes = Convert.FromBase64String(CryptographyUtils.AesEncrypt("source", "key"));
  20. encryptedBytes[encryptedBytes.Length - 1] ^= 1;
  21. Assert.Throws<CryptographicException>(() => CryptographyUtils.AesDecrypt(Convert.ToBase64String(encryptedBytes), "key"));
  22. }
  23. [Test]
  24. public void 对称加密_错误密钥失败() {
  25. Assert.Throws<CryptographicException>(() => CryptographyUtils.AesDecrypt(CryptographyUtils.AesEncrypt("source", "key"), "bad key"));
  26. }
  27. [Test]
  28. public void 对称加密_格式错误失败()
  29. => Assert.Throws<CryptographicException>(() => CryptographyUtils.AesDecrypt("not base64", "key"));
  30. #endregion
  31. }