3DES和SHA-1

在实际的开发中,为了数据存储和传输的安全考虑,将一些敏感的数据明文加密成密文。
目前主要的加密方式可分为两大类:单项加密和双向加密。
单项加密:通过对数据的摘要计算生成密文,有密文不能反推出明文。常见的单项加密有MD5、Base64、SHA 等
双向加密:双向加密与单项加密相反,双向加密则可以通过密文推算出明文。在双向加密又可分为对称加密和非对称加密。
对称加密:数据的使用者必须有相同的密钥,才能对数据进行加解密,就像彼此约定好的暗号一样,常见的对称加密:DES,3DES,RC4、RC5、AES、IDEA等
非对称加密:非对称加密是相对于对称加密而言,非对称加密是一种“信息公开的密钥交换协议”,他需要公开密钥和私有密钥一组配对的密钥。通常是用公钥对数据加密,加密后的数据只有与公钥匹配的私钥可以对其解密,换句话说,只有持有与公钥匹配的私钥用户才能使用该机密数据。知道其中任何一个,便不能推算出另外一个。常见的有RSA,DSA。
3DES加密
3DES加密技术,其实也不是什么新的加密技术,它只是进行3次DES解密操作得到明文或密文,是一种比DES安全新能更好的加密方式。假设DK()和EK()分别代表DES的解密和加密函数,P表示明文,C表示密文,则3DES的加解密过程可表示为:
3DES加密过程:C = EK(DK(EK(P))),即对明文进行操作:加密–>解密–>加密,得到密文。
3DES解密过程:P =DK(EK(DK(C))),即对密文进行操作:解密–>加密–>解密,得到明文。
DES加密是对每8个字节作为一个加密数据块,因此实现该算法是,需要进行对数据分块和补位(即当最后不足8个字节是,需要补足8位)。JAVA中的API提供了Nopading用Zero填充和FCS5Pading两种方法。
SHA-1算法
sha-1算法的思想是就收一段明文,然后以一种不可逆的方式将其将其转化为(通常是更小)密文。也可理解为,将一串输入码,转化为长度较短,位数固定的序列即散列值的过程。
单向散列函数的安全性在于其产生散列值的操作过程具有较强的单向性。如果在输入序列中嵌入密码,那么任何人在不知道密码的情况下都不能产生正确的散列值,从而保证了其安全性。SHA将输入流按照每块512位(64个字节)进行分块,并产生20个字节的被称为信息认证代码或信息摘要的输出。

该算法输入报文的长度不限,产生的输出是一个160位的报文摘要。输入是按512 位的分组进行处理的。SHA-1是不可逆的、防冲突,并具有良好的雪崩效应。

通过散列算法可实现数字签名实现,数字签名的原理是将要传送的明文通过一种函数运算(Hash)转换成报文摘要(不同的明文对应不同的报文摘要),报文摘要加密后与明文一起传送给接受方,接受方将接受的明文产生新的报文摘要与发送方的发来报文摘要解密比较,比较结果一致表示明文未被改动,如果不一致表示明文已被篡改。

已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页