.NET下的加密解密大全(3):非对称加密

NETCore.Encrypt:一个功能强大的.NET加密解密工具库 NETCore.Encrypt是一个功能强大的.NET加密库,支持AES、DES、RSA、MD5、SHA等多种加密算法。该库提供EncryptProvider类简化加密操作,兼容.NET Framework、Core和Standard环境。通过NuGet即可安装,使用简单,如AES加密只需调用AESEncrypt方法。此外还提供字符串扩展方法,如"string".MD5()直接生成哈希值。该库由开发者myloveCc维护,开源在GitHub,适合需要数据加密的.NET开发者使用。 阅读详情
本博文列出了.NET下常用的非对称加密算法,并将它们制作成小DEMO,希望能对大家有所帮助。

RSA

  1. /* 作者:GhostBear  
  2.    博客地址:Http://blog.youkuaiyun.com/ghostbear  
  3. */  
  4. static string EnRSA(string data,string publickey)  
  5. {  
  6.     RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();   
  7.     byte[] cipherbytes;   
  8.     rsa.FromXmlString(publickey);   
  9.     cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(data), false);   
  10.     return Convert.ToBase64String(cipherbytes);  
  11.       
  12. }  
  13.   
  14. static string DeRSA(string data,string privatekey)  
  15. {  
  16.      
  17.     RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();   
  18.     byte[] cipherbytes; rsa.FromXmlString(privatekey);   
  19.     cipherbytes = rsa.Decrypt(Convert.FromBase64String(data), false);   
  20.     return Encoding.UTF8.GetString(cipherbytes);  
  21. }  


调用代码

  1.   Console.WriteLine("RSA非对称加密");  
  2. Byte[] iv = CreateKey(16);  
  3. Byte[] key = CreateKey(27);  
  4. string inputRSA_1 = inputString();  
  5. RSA rsa = RSA.Create();  
  6.   
  7. string enData = EnRSA(inputRSA_1,rsa.ToXmlString(false));  
  8.   
  9.   
  10. Console.WriteLine("加密后的数据:{0}", enData);  
  11. Console.WriteLine("解密后的数据:{0}", DeRSA(enData,rsa.ToXmlString(true)));  


 

DSA(数字签名)

  1.  /* 作者:GhostBear  
  2.    博客地址:Http://blog.youkuaiyun.com/ghostbear  
  3. */  
  4.  static string EnDSA(string data,string publickey)  
  5.    {  
  6.        DSA dsa = DSA.Create();  
  7.        Byte[] result;  
  8.        dsa.FromXmlString(publickey);  
  9.        SHA1 sha1 = SHA1.Create();  
  10.        result = dsa.CreateSignature(sha1.ComputeHash(Convert.FromBase64String(data)));  
  11.        return Convert.ToBase64String(result);  
  12.   
  13.          
  14.    }  
  15.   
  16.    static bool DeDSA(string data,string privatekey,string originalData)  
  17.    {  
  18.        //Byte[] result;   
  19.        DSA dsa = DSA.Create();  
  20.        dsa.FromXmlString(privatekey);  
  21.        SHA1 sha1 = SHA1.Create();  
  22.        return dsa.VerifySignature(sha1.ComputeHash(Convert.FromBase64String(originalData)),Convert.FromBase64String(data));  
  23.   
  24.    }  

调用代码

  1.   Console.WriteLine("DSA数字签名");  
  2. string inputDSA_1 = inputString();  
  3. string inputDSA_2 = inputDSA_1;  
  4. DSA dsa = DSA.Create();  
  5. string enData = EnDSA(inputDSA_1, dsa.ToXmlString(true));  
  6.   
  7. Console.WriteLine("加密后的数据:{0}", enData);  
  8. Console.WriteLine("解密后的数据:{0}", DeDSA(enData, dsa.ToXmlString(false), inputDSA_2));  


 

 

ECDsa

  1. /* 作者:GhostBear  
  2.    博客地址:Http://blog.youkuaiyun.com/ghostbear  
  3. */  
  4. static string EnECDsa(string data, CngKey key)  
  5.  {  
  6.      ECDsaCng ecdsa = new ECDsaCng(key);  
  7.        
  8.        
  9.      SHA1 sha1 = SHA1.Create();  
  10.      byte[] result;  
  11.   
  12.      result = ecdsa.SignHash(sha1.ComputeHash(Convert.FromBase64String(data)));  
  13.   
  14.      return Convert.ToBase64String(result);  
  15.   
  16.  }  
  17.   
  18.  static bool DeECDsa(string data, CngKey key,string originalData)  
  19.  {  
  20.      ECDsaCng ecdsa = new ECDsaCng(key);  
  21.      SHA1 sha1 = SHA1.Create();  
  22.   
  23.      return ecdsa.VerifyHash(sha1.ComputeHash(Convert.FromBase64String(originalData)), Convert.FromBase64String(data));  
  24.  }  


调用代码

  1.   Console.WriteLine("ECDsa数字签名");  
  2. string inputDSA_1 = inputString();  
  3. string inputDSA_2 = inputDSA_1;  
  4. CngKey key = CngKey.Create(CngAlgorithm.ECDsaP256);  
  5.   
  6. string enData = EnECDsa(inputDSA_1, key);  
  7.   
  8. Console.WriteLine("加密后的数据:{0}", enData);  
  9. Console.WriteLine("解密后的数据:{0}", DeECDsa(enData, key, inputDSA_2));  
基于.NET的RSA加密解密实现源码完整解析 非对称加密技术是现代网络安全的基石。不同于对称加密需要共享密钥的做法,非对称加密引入了公钥和私钥的概念。公钥可公开,用于加密数据;私钥必须保密,用于解密。RSA算法是应用最广泛的非对称加密算法之一。.NET框架提供了一系列加密服务,统称为.NET加密服务提供者(Cryptographic Service Providers, CSPs)。这些服务允许开发者在他们的应用程序中实现安全相关的功能,如加密、解密、散列计算和数字签名等。 阅读详情

相关推荐

深入理解RSA非对称加密原理及应用

本章深入探讨了密码学中的非对称加密技术,特别是RSA加密算法的工作原理和实际应用。介绍了RSA算法的基本概念、密钥生成、加密和解密过程,并通过实例演示了如何在编程中实现RSA加密。此外,还对比了对称加密与非对称加密的特点,并探讨了对称加密算法3DES的应用场景。

weixin_42579969的博客 869

重出江湖|C#.net 加密大全

非对称加密: RSA [csharp] view plaincopy /* 作者:GhostBear      博客地址:Http://blog.csdn.net/ghostbear   */   static string EnRSA(string data,string publickey)   {       RSACrypto

chenandczh的专栏 2204

深入理解.NET框架中的AES加密解密DEMO[AESEncrypt]

在网络安全日益重要的今天,加密解密技术成为了保护数据安全的关键技术之一。本文将通过.NET平台上的DEMO演示,深入浅出地介绍AES加密解密算法的应用,帮助开发者在实际项目中更好地理解和应用这些技术。全文将按照.NET加密解密操作的顺序,逐步讲解DEMO的结构和主要功能。通过逐步解析和操作演示,本文旨在帮助读者建立起.NET环境下处理加密解密的实践框架。在第一章节,我们重点介绍DEMO的界面布局、功能菜单及其背后的基本原理,为后续章节的深入学习打好基础。

weixin_42400643的博客 1051

.Net中的加密解密

.Net中的加密解密 引言 在一些比较重要的应用场景中,通过网络传递数据需要进行加密以保证安全。本文将简单地介绍了加密解密的一些概念,以及相关的数字签名、证书,最后介绍了如何在.NET中对数据进行对称加密和解密。 加密和解密 说到加密,可能大家最熟悉的就是MD5了,记得几年前我刚开始接触Web编程的时候,研究的一个ASP论坛程序,它的用户密码就是采用的MD5进行加密。MD5实际上只是一...

weixin_34185560的博客 353

.NET平台RSA加密解密源码实现详解

本文还有配套的精品资源,点击获取 简介:本压缩包文件“基于.net的RSA私钥加密 公钥解密的源码__(0521).rar”提供了C#语言实现的RSA加解密示例代码,帮助理解RSA工作原理和在.NET环境中的应用。文章详细介绍了RSA算法的核心原理、密钥对的生成、加密解密过程及密钥管理等关键步骤,并讨论了在.NET框架中使用RSACryptoServiceProvider类...

weixin_35797963的博客 1420

用VSCode远程开发Jetson小车:告别Jupyter,在本地IDE高效调试Rosmaster Python程序

本文详细介绍了如何利用VSCode的Remote-SSH扩展在本地IDE中高效开发Jetson小车的Rosmaster Python程序。通过配置远程开发环境、调试技巧和项目管理方法,开发者可以告别Jupyter Notebook的碎片化编码,实现完整的机器人控制程序开发,显著提升工作效率。

weixin_30652491的博客 475

在C#中进行RSA非对称加密和解密

如果你习惯使用.net平台,根据以上的文章已经实现了在网页端使用JS进行RSA加密解密的功能,但是还有.net后端呢?只有后端与前端相互配合,才能实现通过RSA加密和解密的整个流程。今天这篇文章就是把这环得圆上。...

cduoa的专栏 6641

【全网最全最详细】智能体提示词prompt教程

定义:提示词是用户输入给AI模型(如ChatGPT、MidJourney等)的指令或问题,用于引导模型生成特定类型的输出。它是用户与AI交互的核心媒介。作用:提示词的质量直接影响AI输出的准确性和相关性。好的提示词能明确任务边界、减少歧义,并激发模型的创造力。提示词就是“给AI下指令的说明书”——越清楚、越具体,AI干得越好!帮你更快、更准地拿到想要的结果,不用和AI“猜谜语”。

qq_38196449的博客 8214

.Net下的加密解密大全(6):玩转非对称加密

本博文来聊聊怎么玩转非对称加密吧,这里主要介绍.NET算法下的3种非对称加密算法:DSA,RSA,ECDsa。上两篇博文分别为Hash家族和非对称加密家族找到了lead,现在我们就为非对称加密技术找个合适的lead吧。   首先创建一个接口:“IEncryptAndDecrypt”,然后为上面的3中算法分别创建3个实现类并让这些类实现接口“IEncryptAndDecrypt”。它们的情况如下图:

GhostHouse 2257

Avalonia跨平台开发入门:从安装到运行第一个应用(Windows/Linux/macOS)

本文详细介绍了Avalonia跨平台开发的基础入门指南,从安装到运行第一个应用的全过程。涵盖Windows、Linux和macOS三大平台的环境配置,特别推荐使用Visual Studio进行开发,并提供常见问题的解决方案,帮助开发者快速上手Avalonia框架。

weixin_28688385的博客 542

Python广度优先搜索BFS - 蓝桥13届省赛污染海域

请问这片N * M海域中有几块是没被污染的独立海域(没被污染的独立海域是指该块海域上下左右被已污染的海域包围,且N * M以外的海域都为已被污染的海域)有一片海域划分为N * M个方格,其中有些海域已被污染(用0表示),有些海域没被污染(用1表示)。第二行开始输入N行,每行M个数字(数字只能为1或者0,1表示没被污染的海域,0表示已被污染的海域)这块4 * 5的海域,有3块海域(绿色)没被污染,因为每一块的上下左右都被污染的海域包围。输出一个整数,表示N * M的海域中有几块是没被污染的独立海域。

m0_69865359的博客 264

.NET 实现RSA加密解密 C#

目录RSA一、生成密钥二、加密解密1.加密2.解密完整代码 RSA 在项目中经常会使用到一些加密场合,恰好最近有用到RSA加密解密算法,以此篇文章记录一下。 RSA加密是一种非对称加密。可以在不直接传递密钥的情况下,完成解密。这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险。是由一对密钥来进行加解密的过程,分别称为公钥和私钥。两者之间有数学相关,该加密算法的原理就是对一极大整数做因数分解的困难性来保证安全性。通常个人保存私钥,公钥是公开的(可能同时多人持有)。 .net实现RSA加密解密算法

kaisaooo的博客 6164

YOLOv11改进策略【卷积层】| CVPR2025 GBConv轻量门控瓶颈卷积 低秩瓶颈降参 + 门控聚焦形态,强效捕捉纤细目标

裂缝形态不规则、纹理纤细,传统卷积参数大、计算冗余,且无法动态聚焦裂缝形态;背景噪声强易干扰特征提取,需要轻量且能自适应聚焦裂缝形态的卷积单元,因此提出轻量门控瓶颈卷积 GBC。

Limiiiing的博客 851

Asp.net常用加密解密方法

Asp.net常用加密解密方法 一、数据加密/编码算法列表 常见用于保证安全的加密或编码算法如下: 1、常用密钥算法 密钥算法用来对敏感数据、摘要、签名等信息进行加密,常用的密钥算法包括: DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合; 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加

zhangshici的专栏 639

华为OD新系统机试真题-8位LED控制器(C/C++/Py/Java/Js/Go)

华为OD新系统机试真题【8位LED控制器】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD新系统4月19号机试真题【8位LED控制器】

qq_45776114的博客 596

23种设计模式-中介者(Mediator)设计模式

软考中级-软件设计师 中介者设计模式

片言可决讼,半纸能缚龙 1862
上一篇: NET下的加密解密大全(2):对称加密 .
下一篇: 36计教您如何提高PHP代码质量
一点晨辉
博客等级 码龄18年 4粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值