数据加密介绍

Posted somepark

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据加密介绍相关的知识,希望对你有一定的参考价值。

加密

加密 可逆加密https://www.cnblogs.com/dotnet261010/p/9127152.html 对称可逆加密 DES加密为例
非对称可逆加密 RSA加密为例

不可逆加密(对用户输入的密码进行加密,和数据库加密后的密码进行对比)

Md5加密

https://www.cnblogs.com/blqw/p/4852020.html

 

1.MD5(密码+登录名+盐)不支持更改登录名。因为更改用户名的时候需要重新保存加密密码,但是却找不到之前的未加密密码了。
2.Md5(密码+盐)这种分随机盐 和 固定盐 。随机盐

加密类型

1. 对称加密

又称作私钥加密。(举例:家里大门开门和锁门用的是同一把钥匙)加密和解密使用相同的密钥。密钥:在加密算法当中,将明文转换为密文,或者密文转换为明文的时候,需要用到的参数。分为公钥和私钥。

**常见的对称加密算法有:AES(wifi密码)、DES(wifie密码)、RC5(电视遥控器)

  • DES Data Encryption Standard
  • AES: Advanced Encryption Standard**

特点:在对称加密算法中,双方使用的密钥相同,要求解密方事先必须知道加密密钥。其特点是算法公开、计算量小、加密速度快、加密效率高,适合加密比较大的文件。不足之处是,通信双方都使用同样的密钥,安全性得不到保证。此外,用户每次使用该算法,需要保证密钥的唯一性,使得双方所拥有的密钥数量很大,密钥管理较为麻烦。同样,只有一把密钥,如果密钥暴露,文件就会被暴露。


2. 非对称加密

与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥和私有密钥。每个人拥有这两个密钥,公开密钥对外公开,任何人都可以获得;私有密钥不公开,单独给指定用户的。如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有对应的公开密钥才能解密。
也就是说,如果某个用户得到了公钥加密后的信息,只能用该用户的解密私钥才能解密。如果知道了其中一个,并不能计算出另外一个,因此如果公开了一对密钥中的一个,并不会危害到另外一个的秘密性质。

RSA加密算法是最常用的非对称加密算法。另外,还有美国国家标准局提出的DSA。

特点:非对称加密算法的保密性比较好,消除了最终用户交换密钥的需要,但加密和解密花费时间长、速度慢,它不适合于对文件加密而只适合于对少量数据进行加密。


3. 单向加密

该算法在加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,密文无法解密。只有重新输入明文,并经过同样的加密算法处理,得到相同的密文并被系统重新识别后,才能真正解密。

特点:该算法计算复杂,通常只在数据量有限的情形下使用,如广泛应用在计算机系统中的口令加密。近年来,单向加密的应用领域正在逐渐增大。

常见的:MD5加密(RSA公司发明),SHA(Secure Hash Algorithm)(美国国家安全局设计)


4. RSA加密算法

什么是RSA加密?

RSA加密算法是最常用的非对称加密算法。也是目前为止最安全的非对称加密算法。
特点:加密速度比较慢一些,但是安全系数比较高。

秘钥对的话需要程序生成.不能我们自己定义
加密/解密:公钥加密-->私钥解密

 public static byte[] encryptByPublicKey(byte[] data, String publicKey)`//公钥加密

 public static byte[] decryptByPrivateKey(byte[] encryptedData, String privateKey) `//私钥解密

加密/解密:私钥加密-->公钥解密
public static byte[] encryptByPrivateKey(byte[] data, String privateKey) `//私钥加密

public static byte[] decryptByPublicKey(byte[] encryptedData, String publicKey)//公钥解密

在实际开发中,都有相应的工具提供RsaUtils,不需要去操心算法的内部实现原理(互质关系、欧拉函数、欧姆定理等)。这些都是数学家们花了几十年搞出来的心血。

名字的来源

RSA是1977年由罗纳德?李维斯特(Ron Rivest)、阿迪?萨默尔(Adi Shamir)和伦纳德?奥德曼(Leonard Adleman)一起提出的。RSA就是他们三人姓氏开头字母拼在一起组成的。


5. MD5加密算法

全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。

它是哪种机密类型?

根据特点而定
md5算法可用于对一段信息进行不可逆的变换运算,产生一个32位的字符串。如果对输入信息作了任何形式的改变,对改变后的信息再次进行MD5运算所产生的数字摘要,与改变前的内容所运算出的MD5数字摘要都是不同的。MD5不是加密,因为结果是不能恢复出原始数据的。

MD5加密的特点

MD5加密既不是对称加密算法,也不是非对称加密算法,属于单向加密算法。因为它不可解密,只能通过匹配的方式间接解密。因此安全系数最高。

开发中如何使用MD5加密?

使用MD5Utils工具类

MD5加密的过程:

1. 先将指定的字符串转换为一个16位的byte[]

2. 遍历取出数组中的每个byte元素

3. 将取出的byte值与255(0xff)做与运算(&)后得到一个255以内的数值

4. 将得到的数值转换为16进制的字符串, 如果它只有一位, 在它的前面补0

5. 将生成的16个二位16进制形式的字符串连接起来, 它就是md5加密后的32位字符串

以上是关于数据加密介绍的主要内容,如果未能解决你的问题,请参考以下文章

数据加密

Jacoco和Tycho surefire的Eclipse RCP插件代码介绍

论如何设计一款端对端加密通讯软件

Laravel基本使用

微信小程序加密数据解密算法-Java实现

微信小程序加密数据解密算法-Java实现