对称加密算法与非对称加密算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DecryptFile(@"c:\tempcm.txt",@"c:\tempm.txt","123");
Console.WriteLine("解a密¨¹成¨¦功|!ê?");
}
//缓冲区大小
staticintbufferSize = 128 * 1024;
//密钥
staticbyte[] salt = { 134, 216, 7, 36, 88, 164, 91, 227, 174, 76, 191, 197, 192, 154, 200, 248 };
{
byte[] bytes =newbyte[bufferSize];
intreadSize = -1;
while((readSize = inFileStream.Read(bytes, 0, bytes.Length)) != 0)
{
cryptoStream.Write(bytes, 0, readSize);
应用
当网站需要向Cookies里面写重要的数据的时候可以使用对称加密算法,需要用到Cookie中的数据的时侯再解密密文,得到说要用的数据。
加密算法简介
由于MD5不可逆算法比较经典,所以在文中主要介绍了MD5算法。
MD5或者说HASH值是一种不可逆的算法。如果需要从密文还原成明文,那么就需要对称和非对称这两类可逆算法。
sma.Padding = PaddingMode.PKCS7;
returnsma;
}
staticvoidEncryptFile(stringinFile,stringoutFile,stringpassword)
{
using(FileStream inFileStream = File.OpenRead(inFile), outFileStream = File.Open(outFile, FileMode.OpenOrCreate))
using(SymmetricAlgorithm algorithm = CreateRijndael(password, salt))
{
algorithm.IV = iv;
using(CryptoStream cryptoStream =newCryptoStream(outFileStream, algorithm.CreateEncryptor(), CryptoStreamMode.Write))
对称算法和非对称算法各有优缺点。非对称加密的突出优点是用于解密的密钥(也就是私钥)永远不需要传递给对方。但是,它的缺点也很突出:非对称加密算法复杂,导致加解密速度慢,故只适合小量数据的场合。而对称加密加解密效率高,系统开销小,适合进行大数据量的加解密。由于文件一般比较大,这个特性决定了适合它的加密方式最好是对称加密。非对称加密的实现主要依赖于RSA、Elgamal、背包算法、Rabin、D-H和ECC(椭圆曲线加密算法)。使用最广泛的是RSA算法,Elgamal是另一种常用的非对称加密算法。
特性
非对称加密非对称加密算法的核心就是加密密钥不等于解密密钥,且无法从任意一个密钥推导出另一个密钥,这样就大大加强了信息保护的力度,而且基于密钥对的原理很容易的实现数字签名和电子信封。比较典型的非对称加密算法是RSA算法,它的数学原理是大素数的分解,密钥是成对出现的,一个为公钥,一个是私钥。公钥是公开的,可以用私钥去解公钥加密过的信息,也可以用公钥去解私钥加密过的信息。
{
PasswordDeriveBytes pdb =newPasswordDeriveBytes(password, salt,"SHA256", 1000);
SymmetricAlgorithm sma = Rijndael.Create();
sma.KeySize = 256;
sma.Key = pdb.GetBytes(32);
}
cryptoStream.Flush();
}
}
}
staticvoidDecryptFile(stringinFile,stringoutFile,stringpassword)
{
using(FileStream inFileStream = File.OpenRead(inFile), outFileStream = File.OpenWrite(outFile))
//初始化向量
staticbyte[] iv = { 134, 216, 7, 36, 88, 164, 91, 227, 174, 76, 191, 197, 192, 154, 200, 248 };
//初始化并返回对称加密算法
staticSymmetricAlgorithm CreateRijndael(stringpassword,byte[] salt)
非对称加密算法与Leabharlann Baidu称加密算法的区别
首先,用于消息解密的密钥值与用于消息加密的密钥值不同;
其次,非对称加密算法比对称加密算法慢数千倍,但在保护通信安全方面,非对称加密算法却具有对称密码难以企及的优势。
using(SymmetricAlgorithm algorithm = CreateRijndael(password, salt))
{
algorithm.IV = iv;
using(CryptoStream cryptoStream =newCryptoStream(inFileStream, algorithm.CreateDecryptor(), CryptoStreamMode.Read))
计算机网络安全
******
学院:软件学院
学生:周宇
学号:**********
时间:2011\10\21
作业1
作业3
前言:
对加密技术的小感悟:
最近有个小项目需要提供注册码功能,当时对我来说是很纠结的。因为反编译总是有可能的,任何人得到源代码后都有可能将软件破解。可在最近对对称加密和非对称加密的研究中,我发现如果用对称加密做用户的身份验证,而同时把公钥、私钥技术应用于注册码验证,以上的困难就迎刃而解了。因为私钥的所有人是我,既是反编译拿到源代码也无法知道我的私钥,从而保证软件版权。
outFileStream.Write(bytes, 0, readSize);
}
outFileStream.Flush();
}
}
}
如上图所以,发送者用接收方公开出来的公钥PK进行加密。接受方在收到密文后,再用与公钥对应的私钥SK进行解密。同样,密文可以被截获,但是由于截获者只有公钥,没有私钥,他不能进行解密。
传统的DES由于只有56位的密钥,因此已经不适应当今分布式开放网络对数据加密安全性的要求。1997年RSA数据安全公司发起了一项“DES挑战赛”的活动,志愿者四次分别用四个月、41天、56个小时和22个小时破解了其用56位密钥DES算法加密的密文。即DES加密算法在计算机速度提升后的今天被认为是不安全的。
for(inti = 0; i < numReads; ++i)
{
readSize = cryptoStream.Read(bytes, 0, bytes.Length);
outFileStream.Write(bytes, 0, readSize);
}
if(slack > 0)
{
readSize = cryptoStream.Read(bytes, 0, (int)slack);
对称加密
概述
对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。不足之处是,交易双方都使用同样钥匙,安全性得不到保证。此外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量成几何级数增长,密钥管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。在计算机专网系统中广泛使用的对称加密算法有DES、IDEA和AES。
应用
网站安全登录,用户身份验证。
软件版权。
加密算法简介
以下是我在Visual Studio 2010中,算法测试中的部分代码。
staticvoidMain()
{
EncryptFile(@"c:\temp.txt",@"c:\tempcm.txt","123");
Console.WriteLine("加¨®密¨¹成¨¦功|!ê?");
AES是美国联邦政府采用的商业及政府数据加密标准,预计将在未来几十年里代替DES在各个领域中得到广泛应用。AES提供128位密钥,因此,128位AES的加密强度是56位DES加密强度的1021倍还多。假设可以制造一部可以在1秒内破解DES密码的机器,那么使用这台机器破解一个128位AES密码需要大约149亿万年的时间。(更深一步比较而言,宇宙一般被认为存在了还不到200亿年)因此可以预计,美国国家标准局倡导的AES即将作为新标准取代DES。
首先,简单介绍下这两类算法。图2-1是对称算法的示意图:
图2-1对称算法
在对称算法中,首先需要发送方和接收方协定一个密钥K。K可以是一个密钥对,但是必须要求加密密钥和解密密钥之间能够互相推算出来。在最简单也是最常用的对称算法中,加密和解密共享一个密钥。上图中,我们为了简单期间,使用的就是一个密钥。密钥K为了防止被第三方获取,可以通过一个秘密通道由发送方传送给接收方。当然,这个秘密通道可以是任何形式,如果觉得可以,你甚至可以寄送一封邮件给对方告诉他密钥。
{
byte[] bytes =newbyte[bufferSize];
intreadSize = -1;
intnumReads = (int)(inFileStream.Length / bufferSize);
intslack = (int)(inFileStream.Length % bufferSize);
对称加密中明文通过对称加密成密文,在公开通道中进行传输。这个时候,即便第三方截获了数据,由于他没有掌握密钥,也是解密不了密文的。
非对称加密(公钥、私钥)
概述
非对称加密(又称不对称加密)使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。加密明文时采用公钥加密,解密密文时使用私钥才能完成,而且发信方(加密者)知道收信方的公钥,只有收信方(解密者)才是唯一知道自己私钥的人。不对称加密算法的基本原理是,如果发信方想发送只有收信方才能解读的加密信息,发信方必须首先知道收信方的公钥,然后利用收信方的公钥来加密原文;收信方收到加密密文后,使用自己的私钥才能解密密文。显然,采用不对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。由于不对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密。广泛应用的不对称加密算法有RSA算法和美国国家标准局提出的DSA。以不对称加密算法为基础的加密技术应用非常广泛。
特性
对称算法的加密和解密表示为:
Ek(M)=C
Dk(C)=M
这种算法具有如下的特性:
Dk(Ek(M))=M
由算法原理所决定的,加密密钥是能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加密解密密钥是相同的。这些算法要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加密解密。只有保密需要的通信,密钥才能保密。
Console.WriteLine("解a密¨¹成¨¦功|!ê?");
}
//缓冲区大小
staticintbufferSize = 128 * 1024;
//密钥
staticbyte[] salt = { 134, 216, 7, 36, 88, 164, 91, 227, 174, 76, 191, 197, 192, 154, 200, 248 };
{
byte[] bytes =newbyte[bufferSize];
intreadSize = -1;
while((readSize = inFileStream.Read(bytes, 0, bytes.Length)) != 0)
{
cryptoStream.Write(bytes, 0, readSize);
应用
当网站需要向Cookies里面写重要的数据的时候可以使用对称加密算法,需要用到Cookie中的数据的时侯再解密密文,得到说要用的数据。
加密算法简介
由于MD5不可逆算法比较经典,所以在文中主要介绍了MD5算法。
MD5或者说HASH值是一种不可逆的算法。如果需要从密文还原成明文,那么就需要对称和非对称这两类可逆算法。
sma.Padding = PaddingMode.PKCS7;
returnsma;
}
staticvoidEncryptFile(stringinFile,stringoutFile,stringpassword)
{
using(FileStream inFileStream = File.OpenRead(inFile), outFileStream = File.Open(outFile, FileMode.OpenOrCreate))
using(SymmetricAlgorithm algorithm = CreateRijndael(password, salt))
{
algorithm.IV = iv;
using(CryptoStream cryptoStream =newCryptoStream(outFileStream, algorithm.CreateEncryptor(), CryptoStreamMode.Write))
对称算法和非对称算法各有优缺点。非对称加密的突出优点是用于解密的密钥(也就是私钥)永远不需要传递给对方。但是,它的缺点也很突出:非对称加密算法复杂,导致加解密速度慢,故只适合小量数据的场合。而对称加密加解密效率高,系统开销小,适合进行大数据量的加解密。由于文件一般比较大,这个特性决定了适合它的加密方式最好是对称加密。非对称加密的实现主要依赖于RSA、Elgamal、背包算法、Rabin、D-H和ECC(椭圆曲线加密算法)。使用最广泛的是RSA算法,Elgamal是另一种常用的非对称加密算法。
特性
非对称加密非对称加密算法的核心就是加密密钥不等于解密密钥,且无法从任意一个密钥推导出另一个密钥,这样就大大加强了信息保护的力度,而且基于密钥对的原理很容易的实现数字签名和电子信封。比较典型的非对称加密算法是RSA算法,它的数学原理是大素数的分解,密钥是成对出现的,一个为公钥,一个是私钥。公钥是公开的,可以用私钥去解公钥加密过的信息,也可以用公钥去解私钥加密过的信息。
{
PasswordDeriveBytes pdb =newPasswordDeriveBytes(password, salt,"SHA256", 1000);
SymmetricAlgorithm sma = Rijndael.Create();
sma.KeySize = 256;
sma.Key = pdb.GetBytes(32);
}
cryptoStream.Flush();
}
}
}
staticvoidDecryptFile(stringinFile,stringoutFile,stringpassword)
{
using(FileStream inFileStream = File.OpenRead(inFile), outFileStream = File.OpenWrite(outFile))
//初始化向量
staticbyte[] iv = { 134, 216, 7, 36, 88, 164, 91, 227, 174, 76, 191, 197, 192, 154, 200, 248 };
//初始化并返回对称加密算法
staticSymmetricAlgorithm CreateRijndael(stringpassword,byte[] salt)
非对称加密算法与Leabharlann Baidu称加密算法的区别
首先,用于消息解密的密钥值与用于消息加密的密钥值不同;
其次,非对称加密算法比对称加密算法慢数千倍,但在保护通信安全方面,非对称加密算法却具有对称密码难以企及的优势。
using(SymmetricAlgorithm algorithm = CreateRijndael(password, salt))
{
algorithm.IV = iv;
using(CryptoStream cryptoStream =newCryptoStream(inFileStream, algorithm.CreateDecryptor(), CryptoStreamMode.Read))
计算机网络安全
******
学院:软件学院
学生:周宇
学号:**********
时间:2011\10\21
作业1
作业3
前言:
对加密技术的小感悟:
最近有个小项目需要提供注册码功能,当时对我来说是很纠结的。因为反编译总是有可能的,任何人得到源代码后都有可能将软件破解。可在最近对对称加密和非对称加密的研究中,我发现如果用对称加密做用户的身份验证,而同时把公钥、私钥技术应用于注册码验证,以上的困难就迎刃而解了。因为私钥的所有人是我,既是反编译拿到源代码也无法知道我的私钥,从而保证软件版权。
outFileStream.Write(bytes, 0, readSize);
}
outFileStream.Flush();
}
}
}
如上图所以,发送者用接收方公开出来的公钥PK进行加密。接受方在收到密文后,再用与公钥对应的私钥SK进行解密。同样,密文可以被截获,但是由于截获者只有公钥,没有私钥,他不能进行解密。
传统的DES由于只有56位的密钥,因此已经不适应当今分布式开放网络对数据加密安全性的要求。1997年RSA数据安全公司发起了一项“DES挑战赛”的活动,志愿者四次分别用四个月、41天、56个小时和22个小时破解了其用56位密钥DES算法加密的密文。即DES加密算法在计算机速度提升后的今天被认为是不安全的。
for(inti = 0; i < numReads; ++i)
{
readSize = cryptoStream.Read(bytes, 0, bytes.Length);
outFileStream.Write(bytes, 0, readSize);
}
if(slack > 0)
{
readSize = cryptoStream.Read(bytes, 0, (int)slack);
对称加密
概述
对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。不足之处是,交易双方都使用同样钥匙,安全性得不到保证。此外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量成几何级数增长,密钥管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。在计算机专网系统中广泛使用的对称加密算法有DES、IDEA和AES。
应用
网站安全登录,用户身份验证。
软件版权。
加密算法简介
以下是我在Visual Studio 2010中,算法测试中的部分代码。
staticvoidMain()
{
EncryptFile(@"c:\temp.txt",@"c:\tempcm.txt","123");
Console.WriteLine("加¨®密¨¹成¨¦功|!ê?");
AES是美国联邦政府采用的商业及政府数据加密标准,预计将在未来几十年里代替DES在各个领域中得到广泛应用。AES提供128位密钥,因此,128位AES的加密强度是56位DES加密强度的1021倍还多。假设可以制造一部可以在1秒内破解DES密码的机器,那么使用这台机器破解一个128位AES密码需要大约149亿万年的时间。(更深一步比较而言,宇宙一般被认为存在了还不到200亿年)因此可以预计,美国国家标准局倡导的AES即将作为新标准取代DES。
首先,简单介绍下这两类算法。图2-1是对称算法的示意图:
图2-1对称算法
在对称算法中,首先需要发送方和接收方协定一个密钥K。K可以是一个密钥对,但是必须要求加密密钥和解密密钥之间能够互相推算出来。在最简单也是最常用的对称算法中,加密和解密共享一个密钥。上图中,我们为了简单期间,使用的就是一个密钥。密钥K为了防止被第三方获取,可以通过一个秘密通道由发送方传送给接收方。当然,这个秘密通道可以是任何形式,如果觉得可以,你甚至可以寄送一封邮件给对方告诉他密钥。
{
byte[] bytes =newbyte[bufferSize];
intreadSize = -1;
intnumReads = (int)(inFileStream.Length / bufferSize);
intslack = (int)(inFileStream.Length % bufferSize);
对称加密中明文通过对称加密成密文,在公开通道中进行传输。这个时候,即便第三方截获了数据,由于他没有掌握密钥,也是解密不了密文的。
非对称加密(公钥、私钥)
概述
非对称加密(又称不对称加密)使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。加密明文时采用公钥加密,解密密文时使用私钥才能完成,而且发信方(加密者)知道收信方的公钥,只有收信方(解密者)才是唯一知道自己私钥的人。不对称加密算法的基本原理是,如果发信方想发送只有收信方才能解读的加密信息,发信方必须首先知道收信方的公钥,然后利用收信方的公钥来加密原文;收信方收到加密密文后,使用自己的私钥才能解密密文。显然,采用不对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。由于不对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密。广泛应用的不对称加密算法有RSA算法和美国国家标准局提出的DSA。以不对称加密算法为基础的加密技术应用非常广泛。
特性
对称算法的加密和解密表示为:
Ek(M)=C
Dk(C)=M
这种算法具有如下的特性:
Dk(Ek(M))=M
由算法原理所决定的,加密密钥是能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加密解密密钥是相同的。这些算法要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加密解密。只有保密需要的通信,密钥才能保密。