加密与解密

  • Post author:
  • Post category:其他


不可逆加密

可以把信息加密成密文,但不能把密文还原成原来的信息。

最近项目上,通过比对存在SD卡上txt文件的sha1 值,判断该txt文件是否被非法篡改。

然后大概了解下其他常用加密算法,以下表格中的加密都是不可逆的;如果同样环境下加密同一段明文,安全度sha256>sha1>md5,耗时sha256>sha1>md5。

算法名称 MD5 SHA1 SHA256
摘要长度

128位(bit)

16字节(byte)

160位(bit)

20字节(byte)

256位(bit)

32字节(byte)

运算步骤数 64 80 64
基本逻辑函数数目 4 4 6
常数数目 64 4 8

加密过程:

处理原文,设置常数,循环运算,拼接结果

应用

java提供专门的各种常用的加密API java.security.MessageDigest

可逆加密

可以把信息加密成密文,也可将密文还原成原本的信息。

对称加密

对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。

对称加密通常使用的是相对较小的密钥,一般小于256 bit。因为密钥越大,加密越强,但加密与解密的过程越慢。如果你只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解;但如果你的密钥有1 MB大,黑客们可能永远也无法破解,但加密和解密的过程要花费很长的时间。密钥的大小既要照顾到安全性,也要照顾到效率,是一个trade-off。

对称加密的一大缺点是密钥的管理与分配,换句话说,如何把密钥发送到需要解密你的消息的人的手里是一个问题。在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。

非对称加密

非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人–银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。

对称加密与非对称加密结合

(1) 对称加密加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高。

(2) 非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。

(3) 解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。



版权声明:本文为qq_38861828原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。