mirror of
https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git
synced 2025-09-21 02:58:06 +08:00
refactor(tenpayv2): 优化加解密及哈希算法工具类
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
using System;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV2.Utilities
|
||||
{
|
||||
using SKIT.FlurlHttpClient.Primitives;
|
||||
|
||||
/// <summary>
|
||||
/// AES 算法工具类。
|
||||
/// </summary>
|
||||
@@ -20,33 +21,31 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV2.Utilities
|
||||
if (keyBytes is null) throw new ArgumentNullException(nameof(keyBytes));
|
||||
if (cipherBytes is null) throw new ArgumentNullException(nameof(cipherBytes));
|
||||
|
||||
using (SymmetricAlgorithm aes = Aes.Create())
|
||||
{
|
||||
aes.Mode = CipherMode.ECB;
|
||||
aes.Padding = PaddingMode.PKCS7;
|
||||
aes.Key = keyBytes;
|
||||
using SymmetricAlgorithm aes = Aes.Create();
|
||||
aes.Mode = CipherMode.ECB;
|
||||
aes.Padding = PaddingMode.PKCS7;
|
||||
aes.Key = keyBytes;
|
||||
|
||||
using ICryptoTransform transform = aes.CreateDecryptor();
|
||||
return transform.TransformFinalBlock(cipherBytes, 0, cipherBytes.Length);
|
||||
}
|
||||
using ICryptoTransform transform = aes.CreateDecryptor();
|
||||
return transform.TransformFinalBlock(cipherBytes, 0, cipherBytes.Length);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 基于 ECB 模式解密数据。
|
||||
/// </summary>
|
||||
/// <param name="encodingKey">经 Base64 编码后的 AES 密钥。</param>
|
||||
/// <param name="encodingCipherText">经 Base64 编码后的待解密数据。</param>
|
||||
/// <returns>解密后的文本数据。</returns>
|
||||
public static string DecryptWithECB(string encodingKey, string encodingCipherText)
|
||||
/// <param name="encodingKey">经过编码后的(通常为 Base64)AES 密钥。</param>
|
||||
/// <param name="encodingCipher">经过编码后的(通常为 Base64)待解密数据。</param>
|
||||
/// <returns>解密后的数据。</returns>
|
||||
public static EncodedString DecryptWithECB(EncodedString encodingKey, EncodedString encodingCipher)
|
||||
{
|
||||
if (encodingKey is null) throw new ArgumentNullException(nameof(encodingKey));
|
||||
if (encodingCipherText is null) throw new ArgumentNullException(nameof(encodingCipherText));
|
||||
if (encodingKey.Value is null) throw new ArgumentNullException(nameof(encodingKey));
|
||||
if (encodingCipher.Value is null) throw new ArgumentNullException(nameof(encodingCipher));
|
||||
|
||||
byte[] plainBytes = DecryptWithECB(
|
||||
keyBytes: Convert.FromBase64String(encodingKey),
|
||||
cipherBytes: Convert.FromBase64String(encodingCipherText)
|
||||
keyBytes: EncodedString.FromString(encodingKey, fallbackEncodingKind: EncodingKinds.Base64),
|
||||
cipherBytes: EncodedString.FromString(encodingCipher, fallbackEncodingKind: EncodingKinds.Base64)
|
||||
);
|
||||
return Encoding.UTF8.GetString(plainBytes);
|
||||
return EncodedString.ToLiteralString(plainBytes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user