1.RSA加密

  /// <summary>
/// 加密处理
/// </summary>
/// <param name="content"></param>
/// <param name="publicKeyPem"></param>
/// <param name="charset"></param>
/// <returns></returns>
public static string RSAEncrypt(string content, string publicKeyPem, string charset = "UTF-8")
{
try
{
string sPublicKeyPEM = File.ReadAllText(publicKeyPem); RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.PersistKeyInCsp = false;
RSACryptoServiceProviderExtension.LoadPublicKeyPEM(rsa, sPublicKeyPEM); byte[] data = Encoding.GetEncoding(charset).GetBytes(content);
int maxBlockSize = rsa.KeySize / - ; //加密块最大长度限制
if (data.Length <= maxBlockSize)
{
byte[] cipherbytes = rsa.Encrypt(data, false);
return Convert.ToBase64String(cipherbytes);
} MemoryStream plaiStream = new MemoryStream(data);
MemoryStream crypStream = new MemoryStream();
Byte[] buffer = new Byte[maxBlockSize];
int blockSize = plaiStream.Read(buffer, , maxBlockSize);
while (blockSize > )
{
Byte[] toEncrypt = new Byte[blockSize];
Array.Copy(buffer, , toEncrypt, , blockSize);
Byte[] cryptograph = rsa.Encrypt(toEncrypt, false);
crypStream.Write(cryptograph, , cryptograph.Length);
blockSize = plaiStream.Read(buffer, , maxBlockSize);
} return Convert.ToBase64String(crypStream.ToArray(), Base64FormattingOptions.None);
}
catch (Exception e)
{
e.Error();
return null;
}
}

2.RSA解密

public static string RSADecrypt(string content, string privateKeyPem, string charset = "UTF-8")
{
try
{
RSACryptoServiceProvider rsaCsp = LoadCertificateFile(privateKeyPem); if (string.IsNullOrEmpty(charset))
{
charset = "UTF-8";
}
byte[] data = Convert.FromBase64String(content);
int maxBlockSize = rsaCsp.KeySize / ; //解密块最大长度限制 if (data.Length <= maxBlockSize)
{
byte[] cipherbytes = rsaCsp.Decrypt(data, false);
return Encoding.GetEncoding(charset).GetString(cipherbytes);
} MemoryStream crypStream = new MemoryStream(data);
MemoryStream plaiStream = new MemoryStream();
Byte[] buffer = new Byte[maxBlockSize];
int blockSize = crypStream.Read(buffer, , maxBlockSize); while (blockSize > )
{
Byte[] toDecrypt = new Byte[blockSize];
Array.Copy(buffer, , toDecrypt, , blockSize);
Byte[] cryptograph = rsaCsp.Decrypt(toDecrypt, false);
plaiStream.Write(cryptograph, , cryptograph.Length);
blockSize = crypStream.Read(buffer, , maxBlockSize);
} return Encoding.GetEncoding(charset).GetString(plaiStream.ToArray());
}
catch
{
//e.Error();
return null;
}
}

3.RSA签名

/// <summary>
/// RSA签名
/// </summary>
/// <param name="data"></param>
/// <param name="privateKeyPem"></param>
/// <param name="charset"></param>
/// <returns></returns>
public static string RSASign(string data, string privateKeyPem, string charset)
{
RSACryptoServiceProvider rsaCsp = LoadCertificateFile(privateKeyPem);
byte[] dataBytes = null;
if (string.IsNullOrEmpty(charset))
{
dataBytes = Encoding.UTF8.GetBytes(data);
}
else
{
dataBytes = Encoding.GetEncoding(charset).GetBytes(data);
} byte[] signatureBytes = rsaCsp.SignData(dataBytes, "SHA1"); return Convert.ToBase64String(signatureBytes);
}
```
```
private static RSACryptoServiceProvider LoadCertificateFile(string privateKeyPem)
{
using (System.IO.FileStream fs = System.IO.File.OpenRead(privateKeyPem))
{
byte[] data = new byte[fs.Length];
string res = string.Empty;
fs.Read(data, , data.Length);
if (data[] != 0x30)
{
res = GetPem("RSA PRIVATE KEY", data);
}
try
{
RSACryptoServiceProvider rsa = DecodePemPrivateKey(res);
return rsa;
}
catch (Exception e)
{
e.Error();
return null;
} }
}
```
RSA签名验签
```
public static bool RSACheckContent(string signContent, string sign, string publicKeyPem, string charset)
{
try
{
string sPublicKeyPEM = File.ReadAllText(publicKeyPem);
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.PersistKeyInCsp = false;
RSACryptoServiceProviderExtension.LoadPublicKeyPEM(rsa, sPublicKeyPEM);
SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
if (string.IsNullOrEmpty(charset))
{
charset = DEFAULT_CHARSET;
}
bool bVerifyResultOriginal = rsa.VerifyData(Encoding.GetEncoding(charset).GetBytes(signContent), sha1, Convert.FromBase64String(sign));
return bVerifyResultOriginal;
}
catch(Exception e)
{
e.Error();
return false;
}
}

4.MD5加密

/// <summary>
/// MD5加密算法
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string MD5(String str, string encoder = "UTF8")
{
byte[] result = null;
byte[] inputbyt = null;
switch (encoder)
{
case "UTF8":
inputbyt = Encoding.UTF8.GetBytes(str);
break;
case "GBK":
inputbyt = Encoding.GetEncoding("GBK").GetBytes(str);
break;
default:
inputbyt = Encoding.GetEncoding("GB2312").GetBytes(str);
break;
}
result = ((HashAlgorithm)CryptoConfig.CreateFromName("MD5")).ComputeHash(inputbyt);
StringBuilder output = new StringBuilder();
for (int i = ; i < result.Length; i++)
{
output.Append((result[i]).ToString("x2", System.Globalization.CultureInfo.InvariantCulture));
}
return output.ToString();
}

C# RSA加解密和MD5加密的更多相关文章

  1. Node.js的DES加解密和MD5加密

    最基本的就是经常用的md5加密算法 代码如下 var  MD5=function (data) {        var _encrymd5 = require('crypto').createHas ...

  2. rsa加解密的内容超长的问题解决

    一. 现象:      有一段老代码用来加密的,但是在使用key A的时候,抛出了异常:javax.crypto.IllegalBlockSizeException: Data must not be ...

  3. Delphi RSA加解密【 (RSA公钥加密,私钥解密)、(RSA私钥加密,公钥解密)、MD5加密、SHA加密】

    作者QQ:(648437169) 点击下载➨delphi RSA加解密 [Delphi RSA加解密]支持 (RSA公钥加密,私钥解密).(RSA私钥加密,公钥解密).MD5加密.SHA1加密.SHA ...

  4. 前后端java+vue 实现rsa 加解密与摘要签名算法

    RSA 加密.解密.签名.验签.摘要,前后端java+vue联调测试通过 直接上代码 // 注意:加密密文与签名都是唯一的,不会变化.// 注意:vue 端密钥都要带pem格式.java 不要带pem ...

  5. Rsa加解密Java、C#、php通用代码 密钥转换工具

    之前发了一篇"TripleDes的加解密Java.C#.php通用代码",后面又有项目用到了Rsa加解密,还是在不同系统之间进行交互,Rsa在不同语言的密钥格式不一样,所以过程中主 ...

  6. 【go语言】RSA加解密

    关于go语言的RSA加解密的介绍,这里有一篇文章,已经介绍的很完整了. 对应的go语言的加解密代码,参考git. 因为原文跨语言是跟php,我这里要跟c语言进行交互,所以,这里贴上c语言的例子. 参考 ...

  7. java RSA加解密以及用途

    在公司当前版本的中间件通信框架中,为了防止非授权第三方和到期客户端的连接,我们通过AES和RSA两种方式的加解密策略进行认证.对于非对称RSA加解密,因为其性能耗费较大,一般仅用于认证连接,不会用于每 ...

  8. openssl - rsa加解密例程

    原文链接: http://www.cnblogs.com/cswuyg/p/3187462.html openssl是可以很方便加密解密的库,可以使用它来对需要在网络中传输的数据加密.可以使用非对称加 ...

  9. RSA加解密工具类RSAUtils.java,实现公钥加密私钥解密和私钥解密公钥解密

    package com.geostar.gfstack.cas.util; import org.apache.commons.codec.binary.Base64; import javax.cr ...

随机推荐

  1. 4sum, 4sum closest

    4sum [抄题]: [思维问题]: 以为很复杂,其实是“排序+双指针”的最高阶模板 [一句话思路]: [输入量特别大怎么办]: [画图]: [一刷]: 先排序! if (i > 0 & ...

  2. windows系统如何真正隐藏文件夹[转载]

    方法一(推荐)eg:现需隐藏e盘bak目录下的tools文件夹e:\bak\tools运行:cmd键入:attrib +s +a +h +r e:\bak\tools然后,你再进去看e盘bak目录下, ...

  3. 8-导弹拦截一(n^2 and nlogn)

    /*某国为了防御敌国的导弹袭击,研发出一套导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发拦截炮弹能够到达任意的高度,但是以后每一发拦截炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的多 ...

  4. ajax原理以及优缺点(转)

    1.ajax技术的背景不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth.google suggest以及gmail等对ajax技术的广泛应用,催生了ajax的 ...

  5. iOS.NSString.pitfall-in-using-nsstring

    1. NSString的使用 在CodeReview中, 发现类似以下代码, 表示深深受伤了: NSString* fString = [NSString stringWithFormat:@&quo ...

  6. OAuth 2.0 学习

    OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版. 本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为R ...

  7. 如何在c语言中源文件调用另一个源文件的函数

    在源文件A1.c中调用A2.c 中的函数有两种方法: 1.在A2.c中有完整的函数定义,在A1.c中添加一下要用到的函数原型(声明)就可以了,例如:在A2.c中:有函数void A2(){...};在 ...

  8. js导出到word、json、excel、csv

    tableExport.js ///*The MIT License (MIT) //Copyright (c) 2014 https://github.com/kayalshri/ //Permis ...

  9. break MISSING_BLOCK_LABEL_160; 看源代码出现的,源代码是反编译的

    break MISSING_BLOCK_LABEL_160; FileNotFoundException fnfe; fnfe; out.close(); throw fnfe; in.close() ...

  10. centos6.5 设置ssh无密码登录

    :关闭防火墙 vim /etc/selinux/config 把SELINUX=enforcing修改为SELINUX=disabled   A机器root连接B机器root用户 (root用户登录) ...