不可逆加密
可以把信息加密成密文,但不能把密文还原成原来的信息。
最近项目上,通过比对存在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) 解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。