Skip to content

Commit

Permalink
Misc optimization
Browse files Browse the repository at this point in the history
  • Loading branch information
JustArchi committed Aug 9, 2024
1 parent 216cd51 commit ff7a1e7
Showing 1 changed file with 13 additions and 7 deletions.
20 changes: 13 additions & 7 deletions ArchiSteamFarm/Helpers/ArchiCryptoHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
// limitations under the License.

using System;
using System.Buffers;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
Expand Down Expand Up @@ -241,7 +242,7 @@ internal static bool VerifyHash(EHashingMethod hashingMethod, string text, strin

try {
byte[] key = SHA256.HashData(EncryptionKey);
byte[] encryptedData = Encoding.UTF8.GetBytes(text);
byte[] textData = Encoding.UTF8.GetBytes(text);
byte[] iv = RandomNumberGenerator.GetBytes(16);

using Aes aes = Aes.Create();
Expand All @@ -250,15 +251,20 @@ internal static bool VerifyHash(EHashingMethod hashingMethod, string text, strin
aes.KeySize = 256;
aes.Key = key;

byte[] cryptedIv = aes.EncryptEcb(iv, PaddingMode.None);
byte[] cipherText = aes.EncryptCbc(encryptedData, iv);
byte[] encryptedIv = aes.EncryptEcb(iv, PaddingMode.None);
byte[] encryptedText = aes.EncryptCbc(textData, iv);
int encryptedCount = encryptedIv.Length + encryptedText.Length;

byte[] output = new byte[cryptedIv.Length + cipherText.Length];
byte[] result = ArrayPool<byte>.Shared.Rent(encryptedCount);

Array.Copy(cryptedIv, 0, output, 0, cryptedIv.Length);
Array.Copy(cipherText, 0, output, cryptedIv.Length, cipherText.Length);
try {
Array.Copy(encryptedIv, result, encryptedIv.Length);
Array.Copy(encryptedText, 0, result, encryptedIv.Length, encryptedText.Length);

return Convert.ToBase64String(output);
return Convert.ToBase64String(result, 0, encryptedCount);
} finally {
ArrayPool<byte>.Shared.Return(result);
}
} catch (Exception e) {
ASF.ArchiLogger.LogGenericException(e);

Expand Down

0 comments on commit ff7a1e7

Please sign in to comment.