Skip to content

0.4.0

Latest
Compare
Choose a tag to compare
@undergroundwires undergroundwires released this 15 Feb 18:11
  • Performance 😲
    • Huge performance improvements.
    • Most of the public methods are now only async: if it can be async, it's async.
    • Adding byte to SafeBytes is now at least 2100% faster
      • Adding single character to SafeString is at least 8200% faster.
    • GetHashCode() in SafeString and SafeBytes is faster than light (0 ms) compared to older implementation (6s for 1000 char with a linear increase per char)
    • Decrypting all bytes in SafeBytes is now 214x faster for 10KB, much faster for bigger sizes (1 MB = 900 ms).
    • AppendAsync(ISafeBytes) and DeepCloneAsync are optimized in SafeBytes
      • It is much faster (from 170 seconds to 37 ms for 10KB data)
      • Leads to much faster ToSafeBytes in SafeString
    • Faster equality checks for bytes and strings without compromising security.
      • SafeBytes.EqualsAsync(bytes) for 100 KB; before: 93032ms, after: 20ms
      • SafeBytes.EqualsAsync(ISafeBytes) for 100 KB before: 183346ms, after: 15ms
      • SafeString.EqualsAsync gains huge performance from inner byte equality, also it does not encrypt & decrypt plain strings anymore.
  • Fixed
    • SafeMemoryStream ends up in infinite loop while reading when its empty.
    • Cannot change AlertChannel on SafeContainer
  • Added
    • Encryption
      • Support for padding in Blowfish algorithm.
      • Both fast & safe (AES + Blowfish) supports setting padding mode.
    • AppendMany() to append multiple bytes to SafeBytes
    • Added constructor that writes the given binary to SafeMemoryStream
    • Added RevealDecryptedBytesAsync in SafeString
    • Added immutable interfaces IReadOnlySafeString and IReadOnlySafeBytes
    • Injection message includes the type of the injected objects.
  • Changed
    • ❗ Replaced sync methods with async variants.
    • Simplified builds: targets only netstandard2.0, netstandard1.6 and NET4.5.
    • Namespace changes for better modular structure
    • Refactorings & better documentation.
    • Renamed decrypting methods in SafeBytes, SafeByte and SafeString with RevealDecrypted prefix.
    • Simplified revealing SafeString, now its through RevealDecryptedStringAsync on SafeString.
  • Removed
    • SafeString.ToSafeBytesAsync is removed because of its inefficiency.