首页 > 编程知识 正文

非对称加密和对称加密区别,常见非对称加密

时间:2023-05-03 16:59:47 阅读:186740 作者:4089

对称加密是一种只有唯一密钥才能解密的加密算法。 也就是说,解密和加密的密钥是相同的。

有通信双方知道密钥,才能解密。

发件人将明文和加密密钥一起特殊加密

算法处理,变成密文

发送。

对称加密算法用于加密敏感数据等信息,常见的算法如下。

1 :数据加密标准(des ) :数据加密标准,适用于高速加密大量数据。

2:3DES(tripledes )基于des,通过用三个不同的密钥对一个数据进行三次加密来提高强度。

4 )高级加密标准(AES ) :高级加密标准是新一代加密算法标准,它速度快,安全级别高。

对称加密算法的特点是算法公开,计算量小,加密速度快,加密效率高。

不足之处是:

1 )交易双方均使用同一密钥,安全性无保证。 回见。

2 )每次使用对称加密算法时,都需要使用别人不知道的唯一密钥,收发双方拥有的密钥数量呈几何级数增长,密钥管理成为用户的负担。

3 )对称加密算法难以在分布式网络系统中使用,主要是因为密钥管理困难

4 :使用成本高。 与公钥密码算法相比,对称密码算法能够提供加密和认证,但缺乏签名功能,使用范围较小。

在计算机专用网络系统中广泛使用的对称加密算法有DES和IDEA等。 美国国家标准局倡导的AES将取代DES作为新标准被采用。

对称加密算法的优点:加密速度快,使用长密钥时不易破解。 假设两个用户需要用对称加密方法加密并交换数据,则用户至少需要两个密钥来交换使用。 如果企业中有n个用户,则整个企业需要n(n-1 )个密钥,密钥的生成和分发将成为企业信息部门的噩梦。

缺点:不安全:对称加密算法的安全性取决于加密密钥的存储情况,但要求企业中所有密钥的人保守秘密是不可能的。 他们通常会无意中泄露密钥。 ——如果一个用户使用的密钥被入侵者获取,则入侵者可以读取用该用户密钥加密的所有文档。 如果整个企业共享一个加密密钥,则无法提及整个企业文件的机密性。 描述服务提供器

常见的加密算法是什么呢?

1.DES

DES算法均称为DataEncryptionStandard,是一种数据加密算法。 DES加密算法是IBM公司于1975年研究成功并公开的。 DES算法的三个条目参数是Key、Data和Mode。 其中Key是8字节共计64位,是DES算法的工作密钥; Data也是8字节64位,是要加密或解密的数据。

2.3度

TDEA (三重数据加密算法) TDEA )密码的俗称。 这相当于对每个数据块应用三次DES加密算法。 由于计算机计算能力的提高,原始DES密码的密钥长度更容易被暴力破解。3DES不是设计新的块密码算法,而是通过增加DES的密钥长度来避免同样的攻击。

3.AES

AES :也称为Rijndael加密法,是美国联邦政府采用的块加密标准。 代替原来的DES使用。 现已成为对称密钥加密的算法之一。

4.RC2

RC2是密码学家RonRivest设计的传统对称分组加密算法,可作为DES算法的推荐替代算法。 其输入和输出均为64位。 密钥的长度可以从1字节到128字节可变。

5.RC4

RC4加密算法是著名的RSA三人组中首屈一指的人物RonaldRivest于1987年设计的可变密钥长度流加密算法簇。 由于RC4核心部分的S-box长度是任意的,该算法的速度可以达到DES加密的10倍左右,具有较高水平的非线性。

6.RC5

RC5组密码算法是1994年由麻省理工学院RonaldL.Rivest教授发明,由RSA实验室分析。 这是一种参数可变的组加密算法,三个可变参数是组大小、密钥大小和加密轮数。 RC5算法中使用了异或、加法、循环3种运算。

非对称加密算法(asymmetriccryptographicalgorithm )又名“公钥加密算法”,此加密方法需要私钥和公钥对。 这两个密钥在数学上相关,用某个用户密钥加密的信息只能用该用户的解密密钥进行解密。 知道了其中一个,就不能计算另一个。 因此,如果公开一对秘密密钥的一方,就不会危害另一方的秘密性质。 将公钥称为公钥的不公开密钥是私钥。

非对称加密算法需要两个密钥:公钥(publickey )和私钥。 公开密钥和秘密密钥是一对,用公开密钥加密数据时,只能用对应秘密密钥解密; 用私钥加密数据后,只能用相应的公钥解密。 由于加密和解密使用两个不同的密钥,因此该算法称为非对称加密算法。

非对称加密算法实现秘密信息交换的基本过程是甲方生成一对密钥,将其中的一个密钥作为公共密钥公开给其他人,得到该公钥的乙方利用该密钥加密秘密信息

后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。另一方面,甲方可以使用乙方的公钥对机密信息进行签名后再发送给乙方;乙方再用自己的私匙对数据进行验签。
非对称密码体制的特点:
1:算法强度复杂
2:安全性高:安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。
3:非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要。
工作原理
1.A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥。
2.A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。
3.A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。
4.A将这个消息发给B(已经用B的公钥加密消息)。
5.B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。
主要算法
RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)。

实例:JSEncrypt (非对称加密)

<!DOCTYPE html>
<html>
<head>
  <title>javascript非对称加密(RSA)JSEncrypt Example</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
<script src="http://passport.cnblogs.com/scripts/jsencrypt.min.js"></script>
</head>
<body>

<div class="container">

<label for="privkey">Private Key</label><br/>//私钥
<textarea id="privkey" rows="15" cols="65">-----BEGIN RSA PRIVATE  KEY-----
MIICXQIBAAKBgQDlOJu6TyygqxfWT7eLtGDwajtNFOb9I5XRb6khyfD1Yt3YiCgQ
WMNW649887VGJiGr/L5i2osbl8C9+WJTeucF+S76xFxdU6jE0NQ+Z+zEdhUTooNR
aY5nZiu5PgDB0ED/ZKBUSLKL7eibMxZtMlUDHjm4gwQco1KRMDSmXSMkDwIDAQAB
AoGAfY9LpnuWK5Bs50UVep5c93SJdUi82u7yMx4iHFMc/Z2hfenfYEzu+57fI4fv
xTQ//5DbzRR/XKb8ulNv6+CHyPF31xk7YOBfkGI8qjLoq06V+FyBfDSwL8KbLyeH
m7KUZnLNQbk8yGLzB3iYKkRHlmUanQGaNMIJziWOkN+N9dECQQD0ONYRNZeuM8zd
8XJTSdcIX4a3gy3GGCJxOzv16XHxD03GW6UNLmfPwenKu+cdrQeaqEixrCejXdAF
z/7+BSMpAkEA8EaSOeP5Xr3ZrbiKzi6TGMwHMvC7HdJxaBJbVRfApFrE0/mPwmP5
rN7QwjrMY+0+AbXcm8mRQyQ1+IGEembsdwJBAN6az8Rv7QnD/YBvi52POIlRSSIM
V7SwWvSK4WSMnGb1ZBbhgdg57DXaspcwHsFV7hByQ5BvMtIduHcT14ECfcECQATe
aTgjFnqE/lQ22Rk0eGaYO80cc643BXVGafNfd9fcvwBMnk0iGX0XRsOozVt5Azil
psLBYuApa66NcVHJpCECQQDTjI2AQhFc1yRnCU/YgDnSpJVm1nASoRUnU8Jfm3Oz
uku7JUXcVpt08DFSceCEX9unCuMcT72rAQlLpdZir876
-----END RSA PRIVATE KEY-----</textarea><br/>
<label for="pubkey">Public Key</label><br/>//公钥
<textarea id="pubkey" rows="15" cols="65">-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlOJu6TyygqxfWT7eLtGDwajtN
FOb9I5XRb6khyfD1Yt3YiCgQWMNW649887VGJiGr/L5i2osbl8C9+WJTeucF+S76
xFxdU6jE0NQ+Z+zEdhUTooNRaY5nZiu5PgDB0ED/ZKBUSLKL7eibMxZtMlUDHjm4
gwQco1KRMDSmXSMkDwIDAQAB
-----END PUBLIC KEY-----</textarea><br/>

<div class="tool">
  输入需要加密文字:<br/>
  <textarea name="" id="needCrypt" cols="30" rows="10">测试XXXX</textarea>
  <a rel="external nofollow" rel="external nofollow" href="javascript:void(0);" id="crypt-btn">加密</a><br/>
  加密结果:<br/>
  <textarea name="" id="resultCrypt" cols="30" rows="10">
    
  </textarea>
  <a rel="external nofollow" rel="external nofollow" href="javascript:void(0);" id="decrypt-btn">解密</a><br/>
  解密结果:<br/>
  <textarea name="" id="result" cols="30" rows="10">    
  </textarea>
</div>

  <script type="text/javascript">

  // Call this code when the page is done loading.
  $(function() {
      $("#crypt-btn").click(function(){
          // Encrypt with the public key...
          var encrypt = new JSEncrypt();
          encrypt.setPublicKey($('#pubkey').val());//设置公钥
          var encrypted = encrypt.encrypt($("#needCrypt").val());
          document.getElementById("resultCrypt").innerText = encrypted;
      });
      $("#decrypt-btn").click(function(){
          // Decrypt with the private key...
          var decrypt = new JSEncrypt();
          decrypt.setPrivateKey($('#privkey').val());//设置私钥
          var uncrypted = decrypt.decrypt($("#resultCrypt").val());
          document.getElementById("result").innerText = uncrypted;
      });      
  });
</script>

</div>
</body>
</html>

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。