C#数据Encrypt加密Encrypt解密的算法使用--非对称算法RSACryptoServiceProvider

C#数据加密解密的非对称算法使用---RSACryptoServiceProvider   Asymmetric algorithms--Encrypt Encrypt

C#数据Encrypt加密Encrypt解密的相关算法可以参考System.Security.Cryptography,这个类库中包含MD5,SHA1,SHA256,SHA384,SHA512

MD5 and SHA256 are two of the HashAlgorithm subtypes provided by the .NET Framework. Here are all the major algorithms, in ascending order of security (and hash length, in bytes):
MD5(16) → SHA1(20) → SHA256(32) → SHA384(48) → SHA512(64)
The shorter the algorithm, the faster it executes. MD5 is more than 20 times faster than SHA512 and is well suited to calculating file checksums. You can hash hundreds
of megabytes per second with MD5 , and then store its result in a Guid . (A Guid happens to be exactly 16 bytes long, and as a value type it is more tractable than a byte array;
you can meaningfully compare Guid s with the simple equality operator, for instance.)
However, shorter hashes increase the possibility of collision (two distinct files yielding the same hash).
Use at least SHA256 when hashing passwords or other securitysensitive data. MD5 and SHA1 are considered insecure for this
purpose, and are suitable to protect only against accidental corruption, not deliberate tampering.
SHA384 is no faster than SHA512 , so if you want more security than SHA256 , you may as well use SHA512

引用using System.Security.Cryptography;

代码如下:

 static void Main(string[] args)
        {
            log4net.Config.XmlConfigurator.Configure();
            Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

            TestEncryptgrapg();

            Console.ReadLine();
        }

        public static void TestEncryptgrapg()
        {
            using var rsa = new RSACryptoServiceProvider();
            File.WriteAllText("PublicKeyOnly.xml", rsa.ToXmlString(false));
            File.WriteAllText("PublicPrivate.xml", rsa.ToXmlString(true));

            byte[] data = Encoding.UTF8.GetBytes("Message to encrypt");
            string publicKeyOnly = File.ReadAllText("PublicKeyOnly.xml");
            string publicPrivate = File.ReadAllText("PublicPrivate.xml");
            byte[] encrypted, decrypted;
            using (var rsaPublicOnly = new RSACryptoServiceProvider())
            {
                rsaPublicOnly.FromXmlString(publicKeyOnly);
                encrypted = rsaPublicOnly.Encrypt(data, true);
                // 下面的这解密就会报错,因为需要私钥解密
                // decrypted = rsaPublicOnly.Decrypt (encrypted, true);
            }
            using (var rsaPublicPrivate = new RSACryptoServiceProvider())
            {
                // With the private key we can successfully decrypt:
                rsaPublicPrivate.FromXmlString(publicPrivate);
                decrypted = rsaPublicPrivate.Decrypt(encrypted, true);
                string ss = Encoding.UTF8.GetString(decrypted);
                WriteLog(ss);
            }
        }

原文地址:https://www.cnblogs.com/1175429393wljblog/p/12171890.html

时间: 2024-11-10 16:25:53

C#数据Encrypt加密Encrypt解密的算法使用--非对称算法RSACryptoServiceProvider的相关文章

jdk自带的MD5进行数据的加密与解密

package com.tools.util; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import javax.crypto.Cipher;

数据的加密和解密初识

数据的加密和解密 加密是让数据从明文变成密文,传输过程中是密文,传送过去之后对方接收到的也是密文. 可以理解为密文就是乱码,看不出内在的任何意义,通常也都是逐位对应的. 在接收方接收到密文之后只有把它还原为原来的样子才可以理解对方说的具体是什么,此过程就叫做解密. 1.不同主机之间的进程间通信:Socket-pair,套接字对 套接字Socket的三种类型: 流套接字(Socket_Stream):基于TCP协议通信的套接字 数据报套接字(Socket_Dgram):基于UDP协议通信的套接字

数据之加密与解密

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正.如有不明白的地方,愿可一起探讨. 下面将利用Bober与Alex的通信来解释说明数据的加密和解密过程 Bober与Alex进行通信的简单过程 说明: 图中的1,2过程为Bober和Alex获取对方的签署证书: Bober获得Alex的签署证书后,验证其证书的合法性和正确性: Bober利用单向加密.对称加密以及公钥加密对自己的数据进行加密: 图中的过程3表示Bober将加密后的数据发送给Alex: Alex接收到Bober的加密

PHP 使用 mcrypt 扩展中的 mcrypt_encrypt() 和 mcrypt_decrypt() 对数据进行加密和解密

<?php /* 使用 mcrypt 扩展中的 mcrypt_encrypt() 和 mcrypt_decrypt() 对数据进行加密和解密 */ // 加密 $algorithm = MCRYPT_BLOWFISH; // 加密算法 $key = 'mycryptkey'; // 加密密钥 $data = '12345'; // 要加密或解密的数据 $mode = MCRYPT_MODE_CBC; // 加密或解密的模式 // 初始向量 $iv = mcrypt_create_iv(mcryp

数据的加密和解密

当前网络环境中,数据的来往是十分密切,面对着海量的信息集合,很少有人去考虑如何去保证,或者说数据是怎么被保证安全的到达目的地的,在默认情况下,数据的发送是明文发送的,也就是说,数据的发送可以被除发送方和接收方的第三方所截获,读取信息,或者通过长年累月的数据量分析得出发送方的某些重要信息,这对于用户来说都是不可接受的,所以随着网络数据的不断发展,人们不断对数据加密进行更新换代,由一开始的传统加密,通过替换的方式加密信息,到后来的块加密算法: 现在的加密算法,如对称加密,公钥加密,作为一段时期的主要

iOS开发之 AES+Base64数据混合加密与解密

2016-04-08 09:03 编辑: liubinqww 分类:iOS开发 来源:liubinqww 投稿 4 889 "APP的数据安全已经牵动着我们开发者的心,简单的MD5/Base64等已经难以满足当下的数据安全标准,本文简单的介绍下AES与Base64的混合加密与解密" AES:高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES

系统安全之数据的加密和解密、CA的介绍、SSL或TLS协议简介及握手过程

网络通信需要安全                所谓的网络通信就是进程与进程之间的通信                        然而进程的通信一般可以分成两类:1.同一主机之间的进程通信                                                                              2.不同主机之间的进程通信                                                              

如何使用powershell encrypt(加密), decrypt(解密) 账户密码

在SharePoint 2010,2013的项目中,考虑到场解决方案的deploy可以会造成系统的down time, 还有追求一键安装配置所有的服务,越来越多的人用Powershell去创建service application, web application, site collection,在页面配置webpart, 不可避免的,我们需要在创建过程中传递一些账户信息,如果直接把用户密码存放在powershell之中,实在是不安全,任何能接触到source code的人都能够看到这些信息,

数据的加密传输——单片机上实现TEA加密解密算法(转)

源:数据的加密传输——单片机上实现TEA加密解密算法 各位大侠在做数据传输时,有没有考虑过把数据加密起来进行传输,若在串口或者无线中把所要传的数据加密起来,岂不是增加了通信的安全性.常用的加密解密算法比如DES.RSA等,受限于单片机的内存和运算速度,实现起来比较困难,但一种叫TEA的加密算法特别适合单片机使用. TEA(Tiny Encryption Algorithm)是一种简单高效的加密算法,以加密解密速度快,实现简单著称.算法很简单,TEA算法每一次可以操作64-bit(8-byte),