You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.