C#常用加密解密方法(RAS加密解密)

C#实现RSA加密解密 RSA介绍 RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。 RSA的缺点: 产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。 分组长度太大,为保证安全性,n 至少也要 600bits以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级... 阅读详情

在日常开发过程中,总会遇到需要加密解密的需求,这里我整理了C#常用的加密解密方法分享给大家。

先看看加密的基本概念:

"加密",是一种限制对网络上传输数据的访问权的技术。原始数据(也称为明文,plaintext)被加密设备(硬件或软件)和密钥加密而产生的经过编码的数据称为密文(ciphertext)。将密文还原为原始明文的过程称为解密,它是加密的反向处理,但解密者必须利用相同类型的加密设备和密钥对密文进行解密。

加密的基本功能包括:

1. 防止不速之客查看机密的数据文件;

2. 防止机密数据被泄露或篡改;

3. 防止特权用户(如系统管理员)查看私人数据文件;

4. 使入侵者不能轻易地查找一个系统的文件。

一、本节摘要 

本节主要分享RAS加密解密:

        RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。

        RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NPC问题。

C# RAS 加密与解密讲解 RSA加密算法 在谈RSA加密算法之前,我们需要先了解下两个专业名词,对称加密和非对称加密。 对称加密即:含有一个称为密钥的东西,在消息发送前使用密钥对消息进行加密,在对方收到消息之后,使用相同的密钥进行解密 非对称加密即:加密和解密使用不同的密钥的一类加密算法。这类加密算法通常有两个密钥A和B,使用密钥A加密数据得到的密文,只有密钥B可以进行解密操作(即使密钥A也无法解密),相反,使用了密... 阅读详情

相关推荐

C#中实现RSA生成公钥和私钥算法

C#中,我们可以使用.NET Framework提供的加密库来生成RSA公钥和私钥。本文将详细介绍如何在C#中实现RSA生成公钥和私钥的算法,并提供相应的源代码。需要注意的是,生成的RSA密钥对是随机生成的,每次运行代码都会得到不同的密钥对。此外,上述示例代码生成的RSA密钥对都是以XML格式进行导出的,如果需要以其他格式进行导出,可以使用相应的方法进行转换。通过以上步骤,我们成功地实现了在C#中生成RSA公钥和私钥的算法。在实际应用中,密钥的安全性非常重要,需要妥善保管和管理,避免泄露。

ByteHero的博客 1903

C#实现RSA加密与解密、签名与认证

一、RSA简介 RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因

zoey的专栏 4万+

RSA加密解密(C#)实现

RSA加密解密C#实现调用实例 public string RSAEncrypt(string xmlPublicKey, string m_strEncryptString) { try { byte[] PlainTextBArray; byte[] CypherTextBArray; string Result; System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(xmlPublicKey); PlainTextBArray = (new UnicodeEncoding()).GetBytes(m_strEncryptString); CypherTextBArray = rsa.Encrypt(PlainTextBArray, false); Result = Convert.ToBase64String(CypherTextBArray); return Result; } catch (Exception ex) { throw ex; } } //RSA加密函数 public string RSAEncrypt(string xmlPublicKey, byte[] EncryptString) { try { byte[] CypherTextBArray; string Result; System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(xmlPublicKey); CypherTextBArray = rsa.Encrypt(EncryptString, false); Result = Convert.ToBase64String(CypherTextBArray); return Result; } catch (Exception ex) { throw ex; } }

关于C#RSA加密

那么问题来了,在C#RSA加密工具类RSACryptoServiceProvider中,并没有支持PEM格式公钥为基准的加密方法,只能用一种.net平台认可的xml字符串的公钥才能够进行加密。一般对接第三方的接口时,接口提供方如果要求以RSA方式进行加密传输,并且给了你一串字符串说是RSA加密公钥,那么该公钥一般是PEM格式文件的base64字符串表现形式。另外如果在之后加密时报长度超长之类的错误,说明需要分段加密,因为RSA加密机制要求:待加密的字节数不能超过密钥的长度值除以 8 再减去 11。

Learn_change_myself的博客 9290

C# 常用加密解密方法

字符串加密分可逆和不可逆加密两种,下面直接贴上代码 using System; using System.Collections.Generic; using System.Text; using System.Security.Cryptography; using System.IO; namespace Operator.CommonOp { /// /// 字

zy332719794的专栏 4171

c# RAS加密,解密和MD5加密

最近公司业务需要,针对用户交易密码实现加密。总体思路是: 1.用户设置和修改交易密码时,前端直接传递明文密码到后端,后端用MD5加密存储。 2.用户交易时,前端用RAS加密,传递到后端解密,再将解密后的密码用MD5加密对比数据库交易密码。验证交易密码的正确性。 此文则是记录本人在实现此功能时遇到的问题及实现此功能的代码,若有错误欢迎互相探讨学习。 首先: MD5加密代码 /// &l...

子昊 993

C# RSA 无 长度限制 加密解密 示例

RSA 是一种非对称加密算法。由于算法特性,加密和解密过程用不同密钥,即公钥和私钥,而被广泛应用于数字证书的安全管理。 在具体应用中,公钥用加密而私钥用于解密,或 私钥用于数字签名而公钥用于签名验证。由于非对称加密算法比价复杂,耗时较长,所以一般在网络环境中RAS 被应用于 签名认证,或小数据传输,如 AES 对称密钥传输。在.Net 框架中,默认提供的辅助类只能对密钥长度大小相同的数据进行加密解密

hangzhi的博客 1万+

C#常用加密算法:MD5、Base64、SHA1、SHA256、HmacSHA256、DES、AES、RSA

using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Security; using System; using System.Collections.Generic; using System.Configuration; using System.IO; using System.Linq; using System.Security.Cryptography; us

weixin_44146294的博客 1209

C#实现RSA加密解密源码

RSA加密解密源码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Security.Cryptography; namespace MyRSA { public class MyRSA { private static

yuexi_hou的专栏 2975

C# Java间进行RSA加密解密交互

这里,讲一下RSA算法加解密在C#和Java之间交互的问题,这两天纠结了很久,也看了很多其他人写的文章,颇受裨益,但没能解决我的实际问题,终于,还是被我捣鼓出来了。 首先,介绍一下写这代码的目的:完成webService验证问题,服务器端采用C#开发,客户端采用Java开发。服务器端给客户端提供公钥,已进行数据加密,客户端加密后提数据提交给服务器,服务器用私钥对数据解密,进行验证。 这里遇到...

weixin_30332241的博客 120

C#中的三种 加密解密

刚刚学会的C#加密与解密(三种)MD5加密/RSA加密与解密/DES加密。也是刚刚申请的blog随便发布一下。 (一)、MD5加密 MD5 md5 = new MD5CryptoServiceProvider(); byte[] palindata = Encoding.Default.GetBytes(textBox1.Text);//将要加密的字符串转换为字节数组...

weixin_30689307的博客 180

ras私钥c#转java_C#RSA对接JAVA中RSA方式代码实例

C#中通过FromXmlString属性加载的是XML形式,而JAVA中用到的是解析后的PEM格式的字符串,总之读取证书中信息无非是转换方式问题/// /// c# 使用 java 的公钥进行rsa加密 utf8编码 通过解析公钥加密数据/// /// /// public static string RSAEncrypts(string content){RSACryptoServicePro...

weixin_31849265的博客 427

C# Java间进行RSA加密解密交互(三)

原文: C# Java间进行RSA加密解密交互(三) 接着前面一篇C# Java间进行RSA加密解密交互(二)说吧,在上篇中为了实现 /** * RSA加密 * @param text--待加密的明文 * @param key--公钥,由服务器端提供的经base64编码的字符串 * @return ...

weixin_33768481的博客 137

C#RSA加密解密签名,就为了支持PEM PKCS#8格式密钥对的导入导出

差点造了一整个轮子.Net Framework 4.5 里面的RSA功能,并未提供简单对PEM密钥格式的支持(.Net Core有咩?),差点(还远着)造了一整个轮子,就...

dotNET跨平台 2136

RSA和AES在c#服务端和android客户端之间的加密解密

记得去年上半年做了个AES和RSA加密解密的功能,最近又回到了这里。不同的是,今年这同事开始的时候给我的不是cer证书,而是Base64,或者16进制的modules和exponent,然后有点束手无策。[C# Java间进行RSA加密解密交互](http://blog.csdn.net/road2010/article/details/40071843) 后来在网上找到篇文章,参照它的这个方法,是

无欢不乐的博客 2430

C# 实现RSA AES加密解密

RASC#System.Security.Cryptography 提供了base64和xmlstring两种方式,我更喜欢base64的 RSA是非对称加密,经典的对称加密就是DES,AES等,不过这两种算法的缺点是加解密双方都必须知道密钥,安全性不高 RSA则可以解决这个问题,生成公钥和私钥,公钥可以公开给其他人,私钥自己保管,别人用公钥加密后,自己用私钥解密。 ...

Stay Hungry 2194

.NET中RAS加解密和签名与验证的c#实现代码讲解,及实现程序提供——转自《起跑线的专栏》

 RSA加密算法是一种非对称加密算法。在公钥加密标准和电子商业中RSA被广泛使用。RSA是1977年由罗纳德•李维斯特(Ron Rivest)、阿迪•萨莫尔(Adi Shamir)和伦纳德•阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。     公钥和私钥的产生假设Alice想要通过一个不可靠

大巧不工 2307
上一篇: C#常用加密解密方法(DES加密解密)
下一篇: C#常用加密解密方法(AES加密解密)
MarcoPro
博客等级 码龄4年 415粉丝 144原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MarcoPro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值