首页 > 其他分享 >RSA加密解密

RSA加密解密

时间:2023-03-01 15:46:11浏览次数:29  
标签:加密 string RSA 解密 RSACryptoServiceProvider key

相比较于Des 对称可逆加密性能要差 加密解密速度不快 安全性好 公开加密key,保证数据的安全传递 公开解密key,保证数据的不可抵赖 公钥就是公开的key 私钥就是不公开的key C#内置实现了公钥加密 私钥解密;想换需要用第三方的DLL-BouncyCastle   使用方法

KeyValuePair<string, string> encryptDecrypt = RsaEncrypt.GetKeyPair();
   string rsaEn1 = RsaEncrypt.Encrypt("net", encryptDecrypt.Key);
   string rsaDe1 = RsaEncrypt.Decrypt(rsaEn1, encryptDecrypt.Value);
相比较于前面这一种Des 对称可逆加密性能要差
加密解密速度不快  安全性好  
公开加密key,保证数据的安全传递
公开解密key,保证数据的不可抵赖
公钥就是公开的key  私钥就是不公开的key
C#内置实现了公钥加密  私钥解密;想换需要用第三方的DLL-BouncyCastle

使用方法
   KeyValuePair<string, string> encryptDecrypt = RsaEncrypt.GetKeyPair();
   string rsaEn1 = RsaEncrypt.Encrypt("net", encryptDecrypt.Key);
   string rsaDe1 = RsaEncrypt.Decrypt(rsaEn1, encryptDecrypt.Value);

    /// <summary>
    /// RSA ECC
    /// 可逆非对称加密 
    /// 非对称加密算法的优点是密钥管理很方便,缺点是速度慢。
    /// </summary>
    public class RsaEncrypt
    {
        /// <summary>
        /// 获取加密/解密对
        /// 给你一个,是无法推算出另外一个的
        /// 
        /// Encrypt   Decrypt
        /// </summary>
        /// <returns>Encrypt   Decrypt</returns>
        public static KeyValuePair<string, string> GetKeyPair()
        {
            RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
            string publicKey = RSA.ToXmlString(false);
            string privateKey = RSA.ToXmlString(true);
            return new KeyValuePair<string, string>(publicKey, privateKey);
        }

        /// <summary>
        /// 加密:内容+加密key
        /// 
        /// </summary>
        /// <param name="content"></param>
        /// <param name="encryptKey">加密key</param>
        /// <returns></returns>
        public static string Encrypt(string content, string encryptKey)
        {
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            rsa.FromXmlString(encryptKey);
            UnicodeEncoding ByteConverter = new UnicodeEncoding();
            byte[] DataToEncrypt = ByteConverter.GetBytes(content);
            byte[] resultBytes = rsa.Encrypt(DataToEncrypt, false);
            return Convert.ToBase64String(resultBytes);
        }

        /// <summary>
        /// 解密  内容+解密key
        /// </summary>
        /// <param name="content"></param>
        /// <param name="decryptKey">解密key</param>
        /// <returns></returns>
        public static string Decrypt(string content, string decryptKey)
        {
            byte[] dataToDecrypt = Convert.FromBase64String(content);
            RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
            RSA.FromXmlString(decryptKey);
            byte[] resultBytes = RSA.Decrypt(dataToDecrypt, false);
            UnicodeEncoding ByteConverter = new UnicodeEncoding();
            return ByteConverter.GetString(resultBytes);
        }


        /// <summary>
        /// 可以合并在一起的,每次产生一组新的密钥
        /// </summary>
        /// <param name="content"></param>
        /// <param name="encryptKey">加密key</param>
        /// <param name="decryptKey">解密key</param>
        /// <returns>加密后结果</returns>
        private static string Encrypt(string content, out string publicKey, out string privateKey)
        {
            RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider();
            publicKey = rsaProvider.ToXmlString(false);
            privateKey = rsaProvider.ToXmlString(true);

            UnicodeEncoding ByteConverter = new UnicodeEncoding();
            byte[] DataToEncrypt = ByteConverter.GetBytes(content);
            byte[] resultBytes = rsaProvider.Encrypt(DataToEncrypt, false);
            return Convert.ToBase64String(resultBytes);
        }
    }

 

标签:加密,string,RSA,解密,RSACryptoServiceProvider,key
From: https://www.cnblogs.com/FanJunCheng521/p/17168476.html

相关文章

  • RSA加密解密及RSA加签验签
    https://www.cnblogs.com/loveyou/p/7299524.html RSA加密解密及RSA加签验签 RSA安全性应用场景说明在刚接触RSA的时候,会混淆RSA加密解密和RSA加签验签的概念......
  • 【加密与解密】第七章①
    应用层进程通过系统调用进入内核,由系统底层完成相应地功能,这个时候内核执行出在该进程的上下文空间中。内核一指系统内核本身,二指第三方软件以内核模块方式加载的驱动文件......
  • 面试官:怎么设计大文件、大数据场景下的传输加密方案?
    某年某月某一天,冷冽寒风中,姚小毛走进了某家公司,开始了新一轮的面试。一阵寒暄后。面试官:“你好,看你的项目经验中有做过数据加密的工作,你是使用什么加密算法加解密的?”......
  • 加解密:公钥、私钥和证书
    参考:https://blog.csdn.net/qq_25933249/article/details/100065093理解公钥和私钥首先要区分加密和认证这两个概念!加密和认证加密是将数据资料加密,使别人即使获取加密......
  • RSA基础原理
     RSA简介RSA是一种非对称加密算法,非对称加密算法是指加密与解密所用的密钥不一致的加密方式RSA的安全性是基于难以对极大整数因式分解的困难其完整使用过程:乙方生成......
  • Https 加密过程 ——为什么要加密
    HTTPS协议也是应用层的一种网络协议,与HTPP协议报文格式都一样,仅在HTTP协议的基础上,引入了加密层。由于HTTP协议内容的明文传输,导致其传输过程十分不安全,所以加密的HTTPS可......
  • JS混淆解密技术研究与案例分析
    引言在现代互联网的世界中,JavaScript(JS)已成为最为流行和广泛使用的编程语言之一。JS的开发人员使用它来构建各种Web应用程序,包括网站、应用和游戏等。然而,随着JS应......
  • OPENSSL RSA 与JAVA C++ RSA 生成 公钥 私钥
    客户端和服务端通信一般可能会采用非对称加密,这样服务端私钥加密,客服端解密,客户端加密,服务端解密。服务端采用JAVA,这个很方便,客户端因为是多平台,采用OPENSSL可能会遇到的问......
  • 北京智游科技(爱加密)-渗透测试实习生-2023-02-27
    一、面试问题环节1.先做个简单的自我介绍吧2.sql注入的原理、分类?3.sql注入的绕过?简单讲一些4.ssrf了解吗?能造成哪些危害?对应的用到的协议有哪些?5.提权了解吗?讲一讲Wi......
  • 对俄制裁仍未起效?美国将手伸向了加密货币……
       Chainalysis报告显示,自俄乌冲突以来,乌克兰已获得7000万美元加密捐赠资金,其中ETH以2890万美元的捐款位居榜首,而BTC和USDT捐助者分别捐款2280万美元和1159万美元。 ......