md5加密是对称还是非对称(md5加密是对称加密吗)

2023-03-01 13:56:05 密码用途 思思

浅谈加密算法 MD5、对称加密、非对称加密

例如:

MD5算法有以下特点:

1、压缩性:无论数据长度是多少,计算出来的MD5值长度相同

2、容易计算性:由原数据容易计算出MD5值

3、抗修改性:即便修改一个字节,计算出来的MD5值也会巨大差异

4、抗碰撞性:知道数据和MD5值,很小概率找到相同MD5值相同的原数据。

优缺点:

密钥管理:比较难,不适合互联网,一般用于内部系统

安全性:中

加密速度:快好 几个数量级 (软件加解密速度至少快 100 倍,每秒可以加解密数 M 比特 数据),适合大数据量的加解密处理

优缺点:

密钥管理:密钥容易管理

安全性:高

加密速度:比较慢,适合 小数据量 加解密或数据签名

md5加密是对称还是非对称(md5加密是对称加密吗) 第1张

MD5是什么类型的(如:对称性或非对称性)

MD5是非对称性的计算机杂凑算法之一。

MD5算法具有以下特点:

1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。

2、容易计算:从原数据计算出MD5值很容易。

3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

4、弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

5、强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。

安卓常见的一些加密((对称加密DES,AES),非对称加密(RSA),MD5)

DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究,

后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力,

24小时内即可被破解

调用过程

最近做微信小程序获取用户绑定的手机号信息解密,试了很多方法。最终虽然没有完全解决,但是也达到我的极限了。有时会报错:javax.crypto.BadPaddingException: pad block corrupted。

出现错误的详细描述

每次刚进入小程序登陆获取手机号时,会出现第一次解密失败,再试一次就成功的问题。如果连续登出,登入,就不会再出现揭秘失败的问题。但是如果停止操作过一会,登出后登入,又会出现第一次揭秘失败,再试一次就成功的问题。

网上说的,官方文档上注意点我都排除了。获取的加密密文是在前端调取wx.login()方法后,调用我后端的微信授权接口,获取用户的sessionkey,openId.然后才是前端调用的获取sessionkey加密的用户手机号接口,所以我可以保证每次sessionkey是最新的。不会过期。

并且我通过日志发现在sessionkey不变的情况下,第一次失败,第二次解密成功。

加密算法,RSA是绕不开的话题,因为RSA算法是目前最流行的公开密钥算法,既能用于加密,也能用户数字签名。不仅在加密货币领域使用,在传统互联网领域的应用也很广泛。从被提出到现在20多年,经历了各种考验,被普遍认为是目前最优秀的公钥方案之一

非对称加密算法的特点就是加密秘钥和解密秘钥不同,秘钥分为公钥和私钥,用私钥加密的明文,只能用公钥解密;用公钥加密的明文,只能用私钥解密。

一、 什么是“素数”?

素数是这样的整数,它除了能表示为它自己和1的乘积以外,不能表示为任何其它两个整数的乘积

二、什么是“互质数”(或“互素数”)?

小学数学教材对互质数是这样定义的:“公约数只有1的两个数,叫做互质数

(1)两个质数一定是互质数。例如,2与7、13与19。

(2)一个质数如果不能整除另一个合数,这两个数为互质数。例如,3与10、5与 26。

(3)1不是质数也不是合数,它和任何一个自然数在一起都是互质数。如1和9908。

(4)相邻的两个自然数是互质数。如 15与 16。

(5)相邻的两个奇数是互质数。如 49与 51。

(6)大数是质数的两个数是互质数。如97与88。

(7)小数是质数,大数不是小数的倍数的两个数是互质数。如 7和 16。

(8)两个数都是合数(二数差又较大),小数所有的质因数,都不是大数的约数,这两个数是互质数。如357与715,357=3×7×17,而3、7和17都不是715的约数,这两个数为互质数。等等。

三、什么是模指数运算?

指数运算谁都懂,不必说了,先说说模运算。模运算是整数运算,有一个整数m,以n为模做模运算,即m mod n。怎样做呢?让m去被n整除,只取所得的余数作为结果,就叫做模运算。例如,10 mod 3=1;26 mod 6=2;28 mod 2 =0等等。

模指数运算就是先做指数运算,取其结果再做模运算。如(5^3) mod 7 = (125 mod 7) = 6。

其中,符号^表示数学上的指数运算;mod表示模运算,即相除取余数。具体算法步骤如下:

(1)选择一对不同的、足够大的素数p,q。

(2)计算n=p q。

(3)计算f(n)=(p-1) (q-1),同时对p, q严加保密,不让任何人知道。

(4)找一个与f(n)互质的数e作为公钥指数,且1ef(n)。

(5)计算私钥指数d,使得d满足(d*e) mod f(n) = 1

(6)公钥KU=(e,n),私钥KR=(d,n)。

(7)加密时,先将明文变换成0至n-1的一个整数M。若明文较长,可先分割成适当的组,然后再进行交换。设密文为C,则加密过程为:C=M^e mod n。

(8)解密过程为:M=C^d mod n。

在RSA密码应用中,公钥KU是被公开的,即e和n的数值可以被第三方窃听者得到。破解RSA密码的问题就是从已知的e和n的数值(n等于pq),想法求出d的数值,这样就可以得到私钥来破解密文。从上文中的公式:(d e) mod ((p-1) (q-1)) = 1,我们可以看出,密码破解的实质问题是:从p q的数值,去求出(p-1)和(q-1)。换句话说,只要求出p和q的值,我们就能求出d的值而得到私钥。

   当p和q是一个大素数的时候,从它们的积p q去分解因子p和q,这是一个公认的数学难题。比如当p*q大到1024位时,迄今为止还没有人能够利用任何计算工具去完成分解因子的任务。因此,RSA从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。

缺点1:虽然RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大缺陷是无法从理论上把握它的保密性能如何。

在android 开发的很多时候。为了保证用户的账户的安全性,再保存用户的密码时,通常会采用MD5加密算法,这种算法是不可逆的,具有一定的安全性

MD5不是加密算法, 因为如果目的是加密,必须满足的一个条件是加密过后可以解密。但是MD5是无法从结果还原出原始数据的。

MD5只是一种哈希算法

常用的几种加密方式,“MD5”,"DES","RSA"

由于之前接触过银行的一些系统,所以对几种加密方式有一些了解和使用,而这次想和大家探讨一下目前最流行的三种加密方式。

MD5:公开的算法,任何语言实现后其实都一样,通用的.不可逆加密:原文--加密--密文,密文无法解密出原文,相同原文加密的结果是一样的,不同长度的内容加密后加过都是32位,原文差别很小,结果差别很大,不管文件多大,都能产生32位长度摘要;

DES:对称可逆加密:加密后能解密回原文,加密key和解密key是同一个,加密解密的速度快,问题是密钥的安全;

RSA:非对称可逆加密:加密后能解密回原文,加密key和解密key不是一个,而是一对,相比较于前面这一种Des 对称可逆加密性能要差;

大家可以根据上图思考CA如何颁发证书到客户端访问时所需要的交互验证过程,可以下方留言交流@!

lua一共有几种加密方式?

Lua作为脚本语言,并没有内置加密功能,如果需要进行加密处理,可以使用第三方库或扩展模块。

在 Lua 中常用的加密算法包括:

AES (Advanced Encryption Standard)

DES (Data Encryption Standard)

RSA (Rivest-Shamir-Adleman)

MD5 (Message-Digest Algorithm 5)

SHA (Secure Hash Algorithm)

其中,AES、DES、RSA 是常用的对称加密算法,而 MD5 和 SHA 则是常用的散列算法。

您可以在 Lua 中使用相应的库或扩展模块来进行加密操作。例如,使用 lua-cipher-core 库可以实现 AES 加密,使用 lua-rsa 库可以实现 RSA 加密。还有 lua-resty-string 库提供了对常见 Hash 算法的支持

这些库都可以在github上找到,并且安装相对简单,使用也很方便,您可以参考相关库的文档和示例代码来学习如何使用。

最后,在使用加密算法时,需要注意选择适当的算法和密钥长度,并遵循相关安全规范来确保数据安全。