/// <summary> /// 签名 /// </summary> /// <param name="baseObj"></param> /// <param name="signData"></param> /// <returns></returns> public static string SignData(RSAUtilBase baseObj, string signData) { if (baseObj is null) { throw new ArgumentNullException(nameof(baseObj)); } try { return(baseObj.SignData(signData, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1)); } catch (Exception ex) { return(ex.Message); } }
/// <summary> /// 验证签名 /// </summary> /// <param name="baseObj"></param> /// <param name="data"></param> /// <param name="sign"></param> /// <returns></returns> public static bool SignData(RSAUtilBase baseObj, string data, string sign) { if (baseObj is null) { throw new ArgumentNullException(nameof(baseObj)); } try { return(baseObj.VerifyData(data, sign, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1)); } catch { throw new ArgumentNullException(nameof(baseObj)); } }
/// <summary> /// 解密 /// </summary> /// <param name="baseObj"></param> /// <param name="decryptData"></param> /// <returns></returns> public static string Decrypt(RSAUtilBase baseObj, string decryptData) { if (baseObj is null) { throw new ArgumentNullException(nameof(baseObj)); } try { //RSAEncryptionPadding :OaepSHA1 || OaepSHA384 ... return(baseObj.Decrypt(decryptData, RSAEncryptionPadding.OaepSHA256)); } catch (Exception ex) { return(ex.Message); } }
/// <summary> /// Use different method to decrypt by data size /// </summary> /// <param name="rsaUtil">RSAUtilBase</param> /// <param name="maxDataSize">Max encrypt data size for RSA</param> /// <param name="cipherData">Encrypted data</param> /// <param name="encryptionPadding">RSAEncryptionPadding</param> /// <returns>Decrypted data</returns> public static string DecryptByDataSize( this RSAUtilBase rsaUtil, int maxDataSize, string cipherData, RSAEncryptionPadding encryptionPadding) { if (string.IsNullOrEmpty(cipherData)) { return(string.Empty); } var isBigData = cipherData.Contains(splitCharForBigData.ToString()); if (isBigData) { return(rsaUtil.DecryptBigData(cipherData, encryptionPadding)); } else { return(rsaUtil.Decrypt(cipherData, encryptionPadding)); } }
/// <summary> /// Use different method to encrypt by data size /// </summary> /// <param name="rsaUtil">RSAUtilBase</param> /// <param name="maxDataSize">Max encrypt data size for RSA</param> /// <param name="data">Data</param> /// <param name="encryptionPadding">RSAEncryptionPadding</param> /// <returns>Encrypted data</returns> public static string EncryptByDataSize( this RSAUtilBase rsaUtil, int maxDataSize, string data, RSAEncryptionPadding encryptionPadding) { if (string.IsNullOrEmpty(data)) { return(string.Empty); } var dataBytes = Encoding.UTF8.GetBytes(data); if (dataBytes.Length > maxDataSize) { return(rsaUtil.EncryptBigData(data, encryptionPadding)); } else { return(rsaUtil.Encrypt(data, encryptionPadding)); } }
public static string RSAencryupt(RSAUtilBase rSAUtilBase, RSAEncryptionPadding rSAEncryptionPadding, string data) => rSAUtilBase.Encrypt(data, rSAEncryptionPadding);
public static bool RSAVerifyData(RSAUtilBase rSAUtilBase, HashAlgorithmName hashAlgorithmName, RSASignaturePadding rSASignaturePadding, string data, string sign) => _RSAUtilBase.VerifyData(data, sign, hashAlgorithmName, rSASignaturePadding);
public static string RSASignData(RSAUtilBase rSAUtilBase, HashAlgorithmName hashAlgorithmName, RSASignaturePadding rSASignaturePadding, string data) => _RSAUtilBase.SignData(data, hashAlgorithmName, rSASignaturePadding);
public static string RSADecrypt(RSAUtilBase rSAUtilBase, RSAEncryptionPadding rSAEncryptionPadding, string data) => _RSAUtilBase.Decrypt(data, rSAEncryptionPadding);
public RSAHelper(RSAUtilBase rSAUtilBase) { _RSAUtilBase = rSAUtilBase; }