C# 加密总结 一些常见的加密方法
2013-07-06 11:54
295 查看
C# 加密总结 一些常见的加密方法
一 散列数据 代码如下:?
?
?
byte[] salt = Convert.FromBase64String(GetSalt(9, 18));
string password = "Password";
byte[] key=new byte[0];
byte[] iv = new byte[0];
GetKeyAndIVFromPasswordAndSalt(password,salt, new RijndaelManaged(), ref key, ref iv);
string input = "Wrox Press";
string encrytText = Encrypt(input, key, iv);
Console.WriteLine(encrytText);
string decryptText=Decrypt(encrytText,key,iv);
Console.WriteLine(decryptText);
只是简单的加密和解密数据是不够的,我们还需要确保数据不被改变,我们可以创建一个消息认证代码来生成一个加密的散列。
?
非对称加密:
?
?
string input = "Wrox Press";
byte[] clearTextAsBytes = Encoding.UTF8.GetBytes(input);
X509Certificate2 serverPublicKeyCertificate = LoadCertificateFromFile("IISExpress.cer");
X509Certificate2 signingCertificate = GetCertificateBySubjectName("test");
byte[] signedClearText = SignData(clearTextAsBytes, signingCertificate);
byte[] encryptedAndSignedData = EncryptWithCertificate(signedClearText, serverPublicKeyCertificate);
byte[] encodedUnencryptedCms = DecryptWithCertificate(encryptedAndSignedData);
List<string> signingSubjects = new List<string>();
byte[] receivedClearText = ValidateSignatureAndExtractContent(encodedUnencryptedCms, signingSubjects);
string unecnryptedString = Encoding.UTF8.GetString(receivedClearText);
Console.ReadLine();
我的计算机是win8,这里并没有用什么企业级证书,作为测试,我是用win8中IIS来创建自签名证书,然后用mmc来管理证书(http://softbbs.zol.com.cn/1/20_1370.html),所以以上的GetCertificateBySubjectName方法需要修改如下:
private static X509Certificate2 GetCertificateBySubjectName(string subjectName)
{
X509Store myStore = new X509Store(StoreName.My, StoreLocation.LocalMachine);
myStore.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certificateCollection = myStore.Certificates.Find(X509FindType.FindBySubjectName, subjectName, true);
X509Certificate2 myCertificate;
if (certificateCollection.Count > 0)
{
myCertificate = certificateCollection[0];
}
else
{
X509Certificate2[] array = new X509Certificate2[myStore.Certificates.Count];
myStore.Certificates.CopyTo(array, 0);
myCertificate = array.FirstOrDefault(x => x.FriendlyName.Equals(subjectName));
}
if (myStore != null)
myStore.Close();
return myCertificate;
}
相关文章推荐
- C# 加密总结 一些常见的加密方法
- C# 加密总结 一些常见的加密方法
- C# 加密总结 一些常见的加密方法
- C#中的静态方法和静态变量的一些总结
- 总结C#中得到程序当前工作目录和执行目录的一些方法
- 总结C#中得到程序当前工作目录和执行目录的一些方法
- C#加密方法总结
- 总结C#中得到程序当前工作目录和执行目录的一些方法
- 【C#小知识】C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用
- C#中一些易混淆概念总结(六)---------解析里氏替换原则,虚方法
- 【C#小知识】C#中一些易混淆概念总结---------数据类型存储,方法调用,out和ref参数的使用
- Atitit.视频文件加密的方法大的总结 java c# php
- C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用
- 总结C#中得到程序当前工作目录和执行目录的一些方法
- iOS里常见的几种信息编码、加密方法简单总结
- iOS里常见的几种信息编码、加密方法简单总结
- Atitit.视频文件加密的方法大的总结 java c# php
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- Atitit.视频文件加密的方法大的总结 java c# php
- 总结一些页面常见的跳转方法