【安全加密技术】--对称加密

转载请注明出处:http://blog.csdn.net/sk719887916/article/details/46822663

上篇了解了《非对称加密》后 今天我来继续了解下加密技术中对称加密。

对称加密

对称加密是最传统的加密方式,比上非对称加密,缺少安全性,但是它依旧是用的比较多的加密方法。

对称加密采用单密钥加密方式,不论是加密还是解密都是用同一个密钥,即“一把钥匙开一把锁”。对称加密的好处在于操作简单、管理方便、速度快。它的缺点在于密钥在

网络传输中容易被窃听,每个密钥只能应用一次,对密钥管理造成了困难。对称加密的实现形式和加密算法的公开性使它依赖于密钥的安全性,而不是算法的安全性。

对称加密原理以及对称加密算法

对称加密的核心——通信双方共享一个密钥 通信过程:  A有明文m,使用加密算法E,密钥key,生成密文c=E(key,m); B收到密文c,使用解密算法D,密钥key,得到明文

m=D(key,c);    比喻:  对称加密是最直观,也是历史最久远的加密手段,类似于加锁和解锁,只不过钥匙的个数非常多(~~2^100),一个人穷其一生也试不完所有可能的钥匙

因此加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的,所以也称这种加密算法为秘

密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解

密,所以密钥的保密性对通信性至关重要。

主要加密算法

上篇文章中就列举了几种关于对称加密算法,主要有DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法。

DES算法

des算法把64位的明文输入块变为数据长度为64位的密文输出块,其中8位为奇偶校验位,另外56位作为密码的长度。首先,DES把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,并进行前后置换,最终由L0输出左32位,R0输出右32位,根据这个法则经过16次迭代运算后,得到L16、R16,将此作为输入,进行与初始置换相反的逆置换,即得到密文输出。DES算法具有极高的安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法,而56位长密钥的穷举空间为256,这意味着如果一台计算机的速度是每秒种检测100万个密钥,那么它搜索完全部密钥就需要将近2285年的时间,因此DES算法是一种很可靠的加密方法。

RC4算法

RC4算法的原理是“搅乱”,它包括初始化算法和伪随机子密码生成算法两大部分,在初始化的过程中,密钥的主要功能是将一个256字节的初始数簇进行随机搅乱,不同的数簇在经过伪随机子密码生成算法的处理后可以得到不同的子密钥序列,将得到的子密钥序列和明文进行异或运算(XOR)后,得到密文。

由于RC4算法加密采用的是异或方式,所以,一旦子密钥序列出现了重复,密文就有可能被破解,但是目前还没有发现密钥长度达到128位的RC4有重复的可能性,所以,RC4也是目前最安全的加密算法之一。

既然说到对称加密 那么这里也稍微提及一下向加密算法

基本的单向加密算法:

MD5(Message Digest algorithm 5,信息摘要算法

BASE64 严格地说,属于编码格式,而非加密算法

SHA(Secure Hash Algorithm,安全散列算法)

HMAC(Hash Message Authentication Code,散列消息鉴别码

代码示列:

  1. public abstract class Coder {
  2. public static final String KEY_SHA = "SHA";
  3. public static final String KEY_MD5 = "MD5";
  4. /**
  5. * MAC算法可选以下多种算法 .
  6. *
  7. * <pre>
  8. * HmacMD5
  9. * HmacSHA1
  10. * HmacSHA256
  11. * HmacSHA384
  12. * HmacSHA512
  13. * </pre>
  14. */
  15. public static final String KEY_MAC = "HmacMD5";
  16. /**
  17. * BASE64解密 .
  18. *
  19. * @param key
  20. * @return
  21. * @throws Exception
  22. */
  23. public static byte[] decryptBASE64(String key) throws Exception {
  24. return (new BASE64Decoder()).decodeBuffer(key);
  25. }
  26. /**
  27. * BASE64加密 .
  28. *
  29. * @param key
  30. * @return
  31. * @throws Exception
  32. */
  33. public static String encryptBASE64(byte[] key) throws Exception {
  34. return (new BASE64Encoder()).encodeBuffer(key);
  35. }
  36. /**
  37. * MD5加密 .
  38. *
  39. * @param data
  40. * @return
  41. * @throws Exception
  42. */
  43. public static byte[] encryptMD5(byte[] data) throws Exception {
  44. MessageDigest md5 = MessageDigest.getInstance(KEY_MD5);
  45. md5.update(data);
  46. return md5.digest();
  47. }
  48. /**
  49. * SHA加密 .
  50. *
  51. * @param data
  52. * @return
  53. * @throws Exception
  54. */
  55. public static byte[] encryptSHA(byte[] data) throws Exception {
  56. MessageDigest sha = MessageDigest.getInstance(KEY_SHA);
  57. sha.update(data);
  58. return sha.digest();
  59. }
  60. /**
  61. * 初始化HMAC密钥
  62. *
  63. * @return.
  64. * @throws Exception
  65. */
  66. public static String initMacKey() throws Exception {
  67. KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC);
  68. SecretKey secretKey = keyGenerator.generateKey();
  69. return encryptBASE64(secretKey.getEncoded());
  70. }
  71. /**
  72. * HMAC加密 .
  73. *
  74. * @param data
  75. * @param key
  76. * @return
  77. * @throws Exception
  78. */
  79. public static byte[] encryptHMAC(byte[] data, String key) throws Exception {
  80. SecretKey secretKey = new SecretKeySpec(decryptBASE64(key), KEY_MAC);
  81. Mac mac = Mac.getInstance(secretKey.getAlgorithm());
  82. mac.init(secretKey);
  83. return mac.doFinal(data);
  84. }
  85. }

加密模式

  ECB:最基本的加密模式,也就是通常理解的加密,相同的明文将永远加密成相同的密文,无初始向量,容易受到密码本重放攻击,一般情况下很少用。

  CBC:明文被加密前要与前面的密文进行异或运算后再加密,因此只要选择不同的初始向量,相同的密文加密后会形成不同的密文,这是目前应用最广泛的模式。CBC加密后的密文是上下文相关的,但明文的错误不会传递到后续分组,但如果一个分组丢失,后面的分组将全部作废(同步错误)。

  CFB:类似于自同步序列密码,分组加密后,按8位分组将密文和明文进行移位异或后得到输出同时反馈回移位寄存器,优点最小可以按字节进行加解密,也可以是n位的,CFB也是上下文相关的,CFB模式下,明文的一个错误会影响后面的密文(错误扩散)。

   OFB:将分组密码作为同步序列密码运行,和CFB相似,不过OFB用的是前一个n位密文输出分组反馈回移位寄存器,OFB没有错误扩散问题。

对称加密和非对称加密区别

非对称加密与对称加密相比,其安全性大大提高好:对称加密的通信双方使用相同的秘钥,如果一方的秘钥遭泄露,那么整个通信就会被破解。而非对称加密使用一对秘钥,一个用来加密,一个用来解密,而且公钥是公开的,秘钥是自己保存的,不需要像对称加密那样在通信之前要先同步秘钥。但是非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。因此实际项目开发中我们需要根据需求场景合理选取加密方式,一般的对称加密足已满足我们的需要。

版权声明:本文为博主原创文章,请尊重原创,转载请标明地址。

时间: 2024-10-07 05:36:57

【安全加密技术】--对称加密的相关文章

java-信息安全(七)-基于非对称加密,对称加密等理解HTTPS

概述 java-信息安全(一)-BASE64,MD5,SHA,HMAC java-信息安全(二)-对称加密算法DES,3DES,AES,Blowfish,RC2,RC4 java-信息安全(四)-数据签名.数字证书 java-信息安全(五)-非对称加密算法RSA 如果想要理解好https,请尽量了解好以上信息等. 参看文章: http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html https://cattail.me/tech/2

php中des加密解密&#160;匹配C#des加密解密&#160;对称加密

原文:php中des加密解密 匹配C#des加密解密 对称加密 网上找来的 php des加密解密 完全匹配上一篇C# 字符串加密解密函数  可以用于C#和php通信 对数据进行加密,其中$key 是加密密钥,$iv 是偏移量,默认偏移量和加密密匙是一样的, <?php class DES { var $key; var $iv; //偏移量 function DES( $key, $iv=0) { //key长度8例如:1234abcd $this->key = $key; if( $iv

Android安全加密:对称加密与非对称加密

凯撒密码 1. 介绍 凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密.明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文.例如,当偏移量是3 的时候,所有的字母A 将被替换成D,B 变成E,由此可见,位数就是凯撒密码加密和解密的密钥. 例如:字符串"ABC"的每个字符都右移3 位则变成"DEF",解密的时候"DEF"的每个字符左移3 位即能

非对称加密和对称加密的区别

在了解对称加密和非对称加密的区别之前我们先了解一下它们的定义: 对称加密(Symmetric Cryptography),又称私钥加密 对称加密是最快速.最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key),这种方法在密码学中叫做对称加密算法.对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中.对称加密通常使用的是相对较小的密钥,一般小于256 bit.因为密钥越大,加密越强,但加密与解密的过程越慢.如

非对称加密技术里面,最近出现了一种奇葩的密钥生成技术,iFace人脸密钥技术

要说到非对称加密技术啊,得先说说对称加密技术 什么是对称加密技术 对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥加密. 也就是密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法使用起来简单快捷,密钥较短,且破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DES的加密性好,而且对计算机功能要求也没有那么高 对称加密算法存在几个问题 1.要求提供一条安全的渠道使通讯双方在首次通讯时协商一个共同的密钥.直接的

对称加密与非对称加密

(一)对称加密(Symmetric Cryptography) 对称加密是最快速.最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key).对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中. 对称加密通常使用的是相对较小的密钥,一般小于256 bit.因为密钥越大,加密越强,但加密与解密的过程越慢.如果你只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解:但如果你的密钥有1 MB

Linux中常见的加密技术介绍

常见的加密技术: 对称加密:非对称加密:单向加密:SSL/TLS:秘钥交换 1.对称加密 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密. 对称加密的常见算法:DES.3DES.AES.IDEA.RC6.CAST5等 (1)优点 加密.解密使用同一个密钥,效率高: (2)缺点 必须商定秘钥:数据传送前,双方必须商定好秘钥.线上商定,存在被窃取风险: 来源无法确认:如果钥匙被窃取,窃取者就可以冒充另一方进行通讯,接收者无法确认来源:

深入浅出加密技术

在互联网的今天,信息是一种不同与我们生活中的物质资源的一种特殊的资源.谁能充分利用这种资源,谁就可以得到更多的财富.所以信息安全变得越来越重要了.所以今天我们来了解一下关于互联网中信息的加密技术. 那它到底是何物呢?惯例,我们先来看下它的定义.    加密技术是指计算机间进行通信时,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)的一种保证信息安全的技术.加密技术是为了防止信息在传输的过程中被人截获以保证安全性的一种技术.有了加密技术,我们就不怕信息中途

第10章 网络安全(1)_对称加密和非对称加密

1 网络安全概述 1.1 计算机网络面临的安全威协 (1)截获:攻击者从网络上窃听他人的通信内容,通常把这类攻击称为"截获".在被动攻击中,攻击者只是观察和分析某一个协议数据单元(PDU)而不干扰信息流. (2)篡改:攻击者篡改网络上传递的报文.这里包括彻底中断传递的报文,甚至把完全伪造的报文传送给接收方,这种攻击也有时也称为"更改报文流".如DNS劫持(域名劫持),安装黑客软件Cain可以进行验证. (3)恶意程序:是一种特殊的主动攻击形式.如计算机病毒.蠕虫.木