C# 常用加密方法收集 对称,非对称
1.用RSACryptoServiceProvider签名验签, 私钥加密,公钥验证
![](/assets/blank.gif)
![](/assets/blank.gif)
1 //生成公钥私钥对 2 byte[] messagebytes = Encoding.UTF8.GetBytes("luo罗"); 3 RSACryptoServiceProvider oRSA = new RSACryptoServiceProvider(); 4 string privatekey = oRSA.ToXmlString(true); 5 string publickey = oRSA.ToXmlString(false); 6 7 //私钥签名 8 RSACryptoServiceProvider oRSA3 = new RSACryptoServiceProvider(); 9 oRSA3.FromXmlString(privatekey); 10 byte[] AOutput = oRSA3.SignData(messagebytes, "SHA1"); 11 //公钥验证 12 RSACryptoServiceProvider oRSA4 = new RSACryptoServiceProvider(); 13 oRSA4.FromXmlString(publickey); 14 bool bVerify = oRSA4.VerifyData(messagebytes, "SHA1", AOutput);
2.RSA 公钥加密, 私钥解密
![](/assets/blank.gif)
![](/assets/blank.gif)
1 using System; 2 using System.Security.Cryptography; 3 /// <summary> 4 /// 生成公钥,私钥对 5 /// </summary> 6 public static string[] GenerateKeys() 7 { 8 string[] sKeys = new String[2]; 9 RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();10 sKeys[0] = rsa.ToXmlString(true);//私钥11 sKeys[1] = rsa.ToXmlString(false);//公钥12 return sKeys;13 }14 15 /// <summary> 16 /// RSA 加密17 /// </summary> 18 /// <param name="sSource" >明文</param> 19 /// <param name="sPublicKey" >公钥</param> 20 public static string EncryptString(string sSource, string sPublicKey)21 {22 RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();23 string plaintext = sSource;24 rsa.FromXmlString(sPublicKey);25 byte[] cipherbytes;26 byte[] byteEn = rsa.Encrypt(Encoding.UTF8.GetBytes("a"), false);27 cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(plaintext), false);28 29 StringBuilder sbString = new StringBuilder();30 for (int i = 0; i < cipherbytes.Length; i++)31 {32 sbString.Append(cipherbytes[i] + ",");33 }34 return sbString.ToString();35 }36 37 38 /// <summary> 39 /// RSA 解密40 /// </summary> 41 /// <param name="sSource">密文</param> 42 /// <param name="sPrivateKey">私钥</param> 43 public static string DecryptString(String sSource, string sPrivateKey)44 {45 RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();46 rsa.FromXmlString(sPrivateKey);47 byte[] byteEn = rsa.Encrypt(Encoding.UTF8.GetBytes("a"), false);48 string[] sBytes = sSource.Split(',');49 50 for (int j = 0; j < sBytes.Length; j++)51 {52 if (sBytes[j] != "")53 {54 byteEn[j] = Byte.Parse(sBytes[j]);55 }56 }57 byte[] plaintbytes = rsa.Decrypt(byteEn, false);58 return Encoding.UTF8.GetString(plaintbytes);59 }
3.RSA 改进版, 私钥加密, 公钥解密
代码参考这里, 代码较多就不贴出来了:
http://www.cnblogs.com/hhh/archive/2011/06/03/2070692.html
相关链接:
[1]RSA私钥加密公钥解密算法。
[2]BigInteger大整数运算类。
![](/assets/blank.gif)
![](/assets/blank.gif)
/// <summary>/// DES算法描述简介:/// DES是Data Encryption Standard(数据加密标准)的缩写。它是由IBM公司研制的一种加密算法,/// 美国国家标准局于1977年公布把它作为非机要部门使用的数据加密标准;/// 它是一个分组加密算法,他以64位为分组对数据加密。/// 同时DES也是一个对称算法:加密和解密用的是同一个算法。/// 它的密匙长度是56位(因为每个第8 位都用作奇偶校验),/// 密匙可以是任意的56位的数,而且可以任意时候改变./// </summary>private static byte[] IV = { 0x14, 0xFC, 0x29, 0xC8, 0x9A, 0xCB, 0xCA, 0xE7 };//加密IV向量public static String Encrypt(String Key, String str){byte[] bKey = Encoding.UTF8.GetBytes(Key.Substring(0, 8));byte[] bIV = IV;byte[] bStr = Encoding.UTF8.GetBytes(str);try { DESCryptoServiceProvider desc = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, desc.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write); cStream.Write(bStr, 0, bStr.Length); cStream.FlushFinalBlock();return Convert.ToBase64String(mStream.ToArray()); }catch {return string.Empty; }} public static String Decrypt(String Key, String DecryptStr){try {byte[] bKey = Encoding.UTF8.GetBytes(Key.Substring(0, 8));byte[] bIV = IV;byte[] bStr = Convert.FromBase64String(DecryptStr); DESCryptoServiceProvider desc = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, desc.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write); cStream.Write(bStr, 0, bStr.Length); cStream.FlushFinalBlock();return Encoding.UTF8.GetString(mStream.ToArray()); }catch {return string.Empty; }}
5.常用SHA1, MD5
![](/assets/blank.gif)
![](/assets/blank.gif)
1 /// <summary> 2 /// MD5加密 3 /// </summary> 4 private static string GetMd5(string md5) 5 { 6 System.Security.Cryptography.MD5CryptoServiceProvider md = new System.Security.Cryptography.MD5CryptoServiceProvider(); 7 byte[] value, hash; 8 value = System.Text.Encoding.UTF8.GetBytes(md5); 9 hash = md.ComputeHash(value);10 md.Clear();11 string temp = "";12 for (int i = 0, len = hash.Length; i < len; i++)13 {14 temp += hash[i].ToString("X").PadLeft(2, '0');15 }16 return temp;17 }18 19 /// <summary>20 /// SHA1加密21 /// </summary>22 private static string Get_SHA1(string strSource)23 {24 System.Security.Cryptography.SHA1 sha = new System.Security.Cryptography.SHA1CryptoServiceProvider();25 byte[] bytResult = sha.ComputeHash(System.Text.Encoding.Default.GetBytes(strSource));26 //转换成字符串,32位 27 string strResult = BitConverter.ToString(bytResult);28 //BitConverter转换出来的字符串会在每个字符中间产生一个分隔符,需要去除掉 29 strResult = strResult.Replace("-", "");30 return strResult;31 }
转载于:https://www.cnblogs.com/hanf/archive/2011/08/13/2137590.html
C# 常用加密方法收集 对称,非对称相关推荐
- 计算机常用的加密方法,摩斯密码以及十种常用加密方法.pdf
. 摩斯密码以及十种常用加密方法 --阿尔萨斯大官人整理,来源互联网 摩斯密码的历史我就不再讲了,各位可以自行百度,下面从最简单的开始: 时间控制和表示方法 有两种 "符号 "用来 ...
- IOS开发之----常用加密方法
本文转载至 http://blog.csdn.net/wildfireli/article/details/23191983 (AES.MD5.Base64) 分类: iPhone 2014-04-0 ...
- mysql常用加密方法_MYSQL 加密的 3 类方法
背景: 若你想要储存一些由可能包含任意字节值的加密函数返回的结果,使用BLOB列而不是 CHAR 或VARCHAR 列,从而避免由于结尾空格的删除而改变一些数据值的潜在问题. 这一句话来自官方文件,记 ...
- 接口对接常用加密方法
和第三方对接加密,通常需要进行字段加密,再进行传输. 1.XML排序后加密 项目实践中,和百年保险对接使用到了这种加密 import xmltodict import hashlibfrom lxml ...
- Java中常用的加密方法(JDK)
加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些 ...
- 计算机常用的加密方法,加密方式有哪些_教你常用加密方式有哪些
随着科技的进步,数据加密已经越来越重要了,在诸多领域都需要数据加密,保证安全.那么加密方式有哪些呢?别着急,小编这就教你常用加密方式有哪些.希望能够对你有所帮助. 加密方式有哪些: 1.MD5,一种被 ...
- 【安全加密技术】 对称加密
转载请注明出处:http://blog.csdn.net/sk719887916/article/details/46822663 上篇了解了<非对称加密>后 今天我来继续了解下加密技术中 ...
- WORD文档的实用加密方法
一.授权加密法 授权法是美国微软公司开发的OFFICE组件中的文字处理软件WORD中自带的一种常用加密方法.主要是通过授权以设置密码形式来进行加密. 具体操作如下:在编辑状态下,先点击工具下拉式菜单, ...
- 【加密】对称加密DES和非对称加密AES、数字签名|非对称加密--公钥和私钥的区别
目录 对称加密DES和非对称加密AES.数字签名 对称加密 1.1 定义 1.2 优缺点 1.3 常用对称加密算法 非对称加密( Asymmetric Cryptography ) 非对称加密(现代加 ...
最新文章
- Spark Streaming实践和优化
- WINRAR 命令行语法
- Blazor+Dapr+K8s微服务之基于WSL安装K8s集群并部署微服务
- java跳转画面后画面白了_如何跳转指定页面后再次跳转到另一页面或原来的页面...
- 怎样在数据绑定到DATAGRID之前,先判断其中一个字段是否为空?
- Android 系统(227)---沉浸式状态栏工具类
- 深入解析C++ STL中的常用容器
- 微软Windows7对Vista的几点改进
- 6.1离散时间马尔科夫链
- 矩阵分析及应用(1-2章)
- C# 调用Webservice实例
- 四巨头键盘钢琴音源完整版-Spectrasonics Keyscape v1.1.3C WiN-MAC
- 设置Iframe透明
- ThunderSoft Apple Music Converter Mac(drm限制解除工具)
- 黑莓手机无法上网解决方案
- css 友情链接效果,常用友情链接代码(带样式)
- 实现数据开放共享的方法
- Ubuntu16.04安装vscode,并修改为简体中文版,设置显示空格和tab,汉字或者汉字的标点带黄色框
- html链接ppt,PPT超链接的各种使用方法
- Javapython实现网页内容自动识别与提取技术实现