文件传输算法
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace DataCrypto
{
///
/// C#数据加密对称加密算法类
///
public class SymmetricMethod
{
private SymmetricAlgorithm mobjCryptoService;
private string Key;
///
/// 对称加密类的C#数据加密
///
public SymmetricMethod()
{
mobjCryptoService = new RijndaelManaged();
Key = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";
}
///
/// 获得密钥
///
/// 密钥
private byte[] GetLegalKey()
{
string sTemp = Key;
mobjCryptoService.GenerateKey();
byte[] bytTemp = mobjCryptoService.Key;
int KeyLength = bytTemp.Length;
if (sTemp.Length > KeyLength)
sTemp = sTemp.Substring(0, KeyLength);
else if (sTemp.Length < KeyLength)
sTemp = sTemp.PadRight(KeyLength, ' ');
return ASCIIEncoding.ASCII.GetBytes(sTemp);
}
///
/// 获得初始向量IV
///
/// 初试向量IV
private byte[] GetLegalIV()
{
string sTemp = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";
mobjCryptoService.GenerateIV();
byte[] bytTemp = mobjCryptoService.IV;
int IVLength = bytTemp.Length;
if (sTemp.Length > IVLength)
sTemp = sTemp.Substring(0, IVLength);
else if (sTemp.Length < IVLength)
sTemp = sTemp.PadRight(IVLength, ' ');
return ASCIIEncoding.ASCII.GetBytes(sTemp);
}
///
/// 加密方法
///
/// 待加密的串
/// 经过加密的串
public string Encrypto(string Source)
{
byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);
MemoryStream ms = new MemoryStream();
2. 数字签名进行文件传输过程是什么
一、加密的过程
不可抄抵赖性可非对称加密算法和HASH函数实现,即数字签名过程如下:
1. 使用HASH算法将主机A要发送的文件生成摘要
2. 利用主机A的私钥加密1中生成的摘要
加密过程由对称密码算法实现:
1. 用对称密码算法对文件进行加密生成加密后的文件
传输
1. 将数字签名、对称密码算法的密钥、加密后的文件打包在一起,使用主机B的公钥进行加密
2. 将生成的整个密文文件发送给主机B
二、解密的过程
1. 主机B得到密文,使用自己的私钥解密,得到数字签名、对称密钥和加密后的文件
2. 主机B用对称密钥解密加密文件,再用HASH函数生成摘要
3. 主机B使用主机A的公钥验证数字签名的正确性(校验HASH散列值)
以上就是文件安全传输的主要过程,脑袋有些乱,可能有错误,楼主自己在查查相关资料吧
3. 用户A需要通过计算机网络安全的将一份机密文件传送给用户B,请问如何实现
一、加密的过程
不可抵赖性可非对称加密算法和HASH函数实现,即数字签名过程如下:
1. 使用HASH算法将主机A要发送的文件生成摘要
2. 利用主机A的私钥加密1中生成的摘要
加密过程由对称密码算法实现:
1. 用对称密码算法对文件进行加密生成加密后的文件
传输
1. 将数字签名、对称密码算法的密钥、加密后的文件打包在一起,使用主机B的公钥进行加密
2. 将生成的整个密文文件发送给主机B
二、解密的过程
1. 主机B得到密文,使用自己的私钥解密,得到数字签名、对称密钥和加密后的文件
2. 主机B用对称密钥解密加密文件,再用HASH函数生成摘要
3. 主机B使用主机A的公钥验证数字签名的正确性(校验HASH散列值)
以上就是文件安全传输的主要过程,脑袋有些乱,可能有错误,楼主自己在查查相关资料吧
4. 数据在网络上传输为什么要加密现在常用的数据加密算法主要有哪些
数据传输加密技术的目的是对传输中的数据流加密,通常有线路加密与端—端加密两种。线路加密侧重在线路上而不考虑信源与信宿,是对保密信息通过各线路采用不同的加密密钥提供安全保护。
端—端加密指信息由发送端自动加密,并且由TCP/IP进行数据包封装,然后作为不可阅读和不可识别的数据穿过互联网,当这些信息到达目的地,将被自动重组、解密,而成为可读的数据。
数据存储加密技术的目的是防止在存储环节上的数据失密,数据存储加密技术可分为密文存储和存取控制两种。前者一般是通过加密算法转换、附加密码、加密模块等方法实现;后者则是对用户资格、权限加以审查和限制,防止非法用户存取数据或合法用户越权存取数据。
常见加密算法
1、DES(Data Encryption Standard):对称算法,数据加密标准,速度较快,适用于加密大量数据的场合;
2、3DES(Triple DES):是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高;
3、RC2和RC4:对称算法,用变长密钥对大量数据进行加密,比 DES 快;
4、IDEA(International Data Encryption Algorithm)国际数据加密算法,使用 128 位密钥提供非常强的安全性;
5、RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的,非对称算法; 算法如下:
首先, 找出三个数,p,q,r,其中 p,q 是两个不相同的质数,r 是与 (p-1)(q-1) 互为质数的数。
p,q,r这三个数便是 private key。接着,找出 m,使得 rm == 1 mod (p-1)(q-1).....这个 m 一定存在,因为 r 与 (p-1)(q-1) 互质,用辗转相除法就可以得到了。再来,计算 n = pq.......m,n 这两个数便是 public key。
6、DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准),严格来说不算加密算法;
7、AES(Advanced Encryption Standard):高级加密标准,对称算法,是下一代的加密算法标准,速度快,安全级别高,在21世纪AES 标准的一个实现是 Rijndael 算法。
8、BLOWFISH,它使用变长的密钥,长度可达448位,运行速度很快;
9、MD5:严格来说不算加密算法,只能说是摘要算法;
对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
(4)文件传输算法扩展阅读
数据加密标准
传统加密方法有两种,替换和置换。上面的例子采用的就是替换的方法:使用密钥将明文中的每一个字符转换为密文中的一个字符。而置换仅将明文的字符按不同的顺序重新排列。单独使用这两种方法的任意一种都是不够安全的,但是将这两种方法结合起来就能提供相当高的安全程度。
数据加密标准(Data Encryption Standard,简称DES)就采用了这种结合算法,它由IBM制定,并在1977年成为美国官方加密标准。
DES的工作原理为:将明文分割成许多64位大小的块,每个块用64位密钥进行加密,实际上,密钥由56位数据位和8位奇偶校验位组成,因此只有56个可能的密码而不是64个。
每块先用初始置换方法进行加密,再连续进行16次复杂的替换,最后再对其施用初始置换的逆。第i步的替换并不是直接利用原始的密钥K,而是由K与i计算出的密钥Ki。
DES具有这样的特性,其解密算法与加密算法相同,除了密钥Ki的施加顺序相反以外。
参考资料来源:网络-加密算法
参考资料来源:网络-数据加密