/// <summary> /// 创建 RSA 的 Blob 原始 二进制 数据 密钥 /// </summary> /// <param name="keySizeType">密钥长度(加密级别) 1024/2048/3072/7680/15360</param> /// <param name="publicKeyBlobBytes">公钥 Blob 原始 二进制 数据</param> /// <param name="privateKeyBlobBytes">私钥 Blob 原始 二进制 数据</param> public static void CreateRsaKeyBlobBytes(RsaKeySizeTypeEnum keySizeType, out byte[] publicKeyBlobBytes, out byte[] privateKeyBlobBytes) { var rsa = new RSACryptoServiceProvider((int)keySizeType); publicKeyBlobBytes = rsa.ExportCspBlob(false); privateKeyBlobBytes = rsa.ExportCspBlob(true); }
/// <summary> /// RSA 解密 二进制数组 /// </summary> /// <param name="privateKeyBlobBytes">私钥Blob二进制数组</param> /// <param name="keySizeType">密钥长度(加密级别) 1024/2048/3072/7680/15360 </param> /// <param name="bytesToDecrypt">要解密的二进制数组</param> /// <returns></returns> public static byte[] RsaDecryptBytesFromBytes(byte[] privateKeyBlobBytes, RsaKeySizeTypeEnum keySizeType, byte[] bytesToDecrypt) { byte[] bytes = null; try { var rsa = new RSACryptoServiceProvider((int)keySizeType); rsa.ImportCspBlob(privateKeyBlobBytes); bytes = rsa.Decrypt(bytesToDecrypt, false); } catch { } return(bytes); }
/// <summary> /// RSA 解密 Base64 字符串 返回 解密后的 原始 字符串 /// </summary> /// <param name="privateKeyBlobBase64String">私钥 Blob 二进制数组 的 Base64 字符串</param> /// <param name="keySize">密钥长度(加密级别) 1024/2048/3072/7680/15360</param> /// <param name="base64StringToDecrypt">要 解密 的 Base64 字符串</param> /// <returns></returns> public static string RsaDecryptStringFromBase64String(string privateKeyBlobBase64String, RsaKeySizeTypeEnum keySizeType, string base64StringToDecrypt) { string decryptString = string.Empty; try { decryptString = DefaultSettingKeys.DEFAULT_ENCODING.GetString(RsaDecryptBytesFromBytes(Convert.FromBase64String(privateKeyBlobBase64String), keySizeType, Convert.FromBase64String(base64StringToDecrypt))); } catch { } return(decryptString); }
/// <summary> /// RSA 加密 字符串 返回 加密后的 Base64 字符串 /// </summary> /// <param name="publicKeyBlobBase64String">公钥 Blob 二进制数组 的 Base64 字符串</param> /// <param name="keySizeType">密钥长度(加密级别) 1024/2048/3072/7680/15360</param> /// <param name="strToEncrypt">要加密的字符串</param> /// <returns></returns> public static string RsaEncryptStringToBase64String(string publicKeyBlobBase64String, RsaKeySizeTypeEnum keySizeType, string strToEncrypt) { string encryptBase64String = string.Empty; try { encryptBase64String = Convert.ToBase64String(RsaEncryptBytesToBytes(Convert.FromBase64String(publicKeyBlobBase64String), keySizeType, DefaultSettingKeys.DEFAULT_ENCODING.GetBytes(strToEncrypt))); } catch { } return(encryptBase64String); }
///// <summary> ///// 解密 文件夹名合法的Base64加密字符串编码 成 原文件夹名称 ///// </summary> ///// <param name="directoryName">文件夹名合法的Base64加密字符串编码</param> ///// <param name="secretKey">密钥 , Null 表示 使用默认密钥</param> ///// <param name="encoding">加密使用的编码 , Null 表示 使用默认编码</param> ///// <returns></returns> //public static string DecryptDirectoryNameFromBase64String(string directoryName, string secretKey = null, Encoding encoding = null) //{ // return DecryptFileNameFromBase64String(directoryName, secretKey, encoding); //} /// <summary> /// 创建 RSA 的 Blob Base64String 形式 的 密钥 字符串 /// </summary> /// <param name="keySizeType">密钥长度(加密级别) 1024/2048/3072/7680/15360</param> /// <param name="publicKeyBlobBase64String">公钥 Blob Base64String 形式 的 密钥 字符串</param> /// <param name="privateKeyBase64String">私钥 Blob Base64String 形式 的 密钥 字符串</param> public static void CreateRsaKeyBlobBase64String(RsaKeySizeTypeEnum keySizeType, out string publicKeyBlobBase64String, out string privateKeyBase64String) { CreateRsaKeyBlobBytes(keySizeType, out var publicKeyBlobBytes, out var privateKeyBlobBytes); publicKeyBlobBase64String = Convert.ToBase64String(publicKeyBlobBytes); privateKeyBase64String = Convert.ToBase64String(privateKeyBlobBytes); }