python中md5加密算法是16位还是32位?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中md5加密算法是16位还是32位?相关的知识,希望对你有一定的参考价值。

32 参考技术A 32 参考技术B 32 参考技术C 128

Python爬虫js进阶基础|常见的加密算法|md5对称加密非对称加密base64httpsca证书

常见的加密算法

Md5

线性散列算法,可以产出一个128位(16字节)的散列值,且MD5加密后产生的是一个固定长度(32位或者16位)可知,当在逆向时,看到32位或者16位时可以猜测是用的MD5加密算法

DES/AES对称加密

AES和DES的区别

DES全称Data Encryption Standard,即数据加密标准,是一种使用秘钥加密的算法,是一种对称加密算法
1.加密后密文长度的不同:
DES加密后密文长度是8的整数倍
AES机密后密文长度是16的整数倍

2.应用场景的不同:
企业级开发使用DES足够安全
如果要求高使用AES

使用DES/AES进行数据交换时要求双方都拥有相同的私钥
DES和AES切换只需要修改CryptoJS.AES<=>CryptoJS.DES

  <html>
	<script src="https://cdn.bootcss.com/crypto-js/3.1.9-1/crypto-js.js"></script>
	<script type="text/javascript">
		var aseKey="12345678"   //定制秘钥,长度必须为:8/16/32位
		var message="i am bobo,who are you?";
		//加密DES/AES切换只需要修改CryptoJS.AES<=>CryptoJS.DES
		var encrypt=CryptoJS.DES.encrypt(message,CryptoJS.enc.Utf8.parse(aseKey),{ 
		    mode:CryptoJS.mode.ECB,
		    padding: CryptoJS.pad.Pkcs7
		  }).toString();
		  alert(encrypt);//加密后
      //解密
		  var decrypt=CryptoJS.DES.decrypt(encrypt,CryptoJS.enc.Utf8.parse(aseKey),{
    		  mode:CryptoJS.mode.ECB,
		  padding:CryptoJS.pad.Pkcs7
		}}.toString(CryptoJS.enc.Utf8);
		 alert(decrypt);//解密后
	</script>
</html>

总结:看见CryptoJS.DES.decrypt或者CryptoJS.DES.encrypt则为非对称加密算法

RSA加密(非对称加密算法)

非对称加密算法需要两个密钥
公开密钥

总结:在js代码中看见setPublicKey或者setPrivateKey则是使用了RSA进行了非对称加密

私钥是通过公钥计算生成的

公钥私钥可以在线生成:
http://web.chacuo.net/netrsakeypair/
也可以看我另一篇文章,教你如何使用Claws-Mail发送绝对安全的加密邮件或者信息
相关文章:图文秒搞懂数字证书、数字签名和非对称加密算法

base64伪加密

Base64是一种64个字符来表示任意二进制数据的方法。base64是一种编码方式而不是加密方式。只是看上去像是个加密而已。
Base64使用A–Z,a–z,0–9,+,/这64个字符实现对数据进行加密

总结:当在阅读js代码时,看到Base64字眼时,使用了伪加密

https加密

https是基于http和SSL/TLS实现的一个协议,他可以保证在网络上传输的数据都是加密的,从而保证数据安全。

1.http协议是不安全的。
在https诞生前,所有网站都是http协议,而http数据传输都是明文,所有可能存在数据泄露和篡改。

2.使用对称秘钥进行数据加密
为了防止数据泄露和篡改,我们对数据进行加密,如:生成一个对称密码,对该秘钥分别交给浏览器和服务端,他们之间传输的数据都是使用对称秘钥进行加密和解密
缺点:如何把秘钥传给服务器?每个客户的对称秘钥相同,浏览器能拿到对称秘钥,那么黑客也可以拿到,所以,数据加密也没有意义了。

3.动态对称秘钥和非对称秘钥
为了解决对称秘钥动态性以及让客户端和服务端安全的获取对称秘钥,可以引入非对称秘钥机制。

总结:因为直接给服务器发送对称秘钥很危险,所以先让服务器生成一个公钥和私钥,并将公钥发给客户端。
客户端生成对称秘钥,用服务器给的公钥把生成的对称秘钥进行加密,之后把加密后的对称秘钥再发送给客户端。客户端使用非对称秘钥进行解密,再使用对称秘钥加密发送数据给客户机,客户机再使用对称秘钥进行解密

缺点:在服务器传给公钥给客户机时,黑客可以拿到公钥,冒充修改自己的公钥是服务器的公钥。所以使得后续加密都不安全了。
4.CA证书的应用

总结:找一个信得过的认证机构,给服务器的公钥做一个认证,证明这个公钥是该服务器的,客户机只需要向认证机发送请求验证该公钥是不是服务器的,即可解决黑客冒充该公钥。

以上是关于python中md5加密算法是16位还是32位?的主要内容,如果未能解决你的问题,请参考以下文章

md5加密以后的字符串长度

JAVA加密算法系列-MD5

Python爬虫js进阶基础|常见的加密算法|md5对称加密非对称加密base64httpsca证书

32位的md5如何转换为16位的

MD5加密算法

16位的MD5加密和32位MD5加密的区别