关于“php_rsa_65537”的问题,小编就整理了【3】个相关介绍“php_rsa_65537”的解答:
php中RSA加密,明文超长,需要分段加密该怎么做?这方面的话我不是很了解,一般来说,加密分为两个部分,一个是非对称加密,一个是对称加密,使用对称加密加密正文信息,使用非对称加密加密对称加密的密钥,然后发送加密数据(消息摘要和数字签名就不讨论了),这是正规的数据加密策略,对称加密默认支持大数据分段加密策略,你只需要从接口中完成加密即可,而且对称加密速度比非对称加密快很多,如果你需要使用这个策略建议使用AES。
如果你不愿意使用对称加密,只愿意使用AES加密,那你就必须丧失速度了,而且自己处理分段加密,因为RSA加密通常是117个字节就要分段(这个长度可能和密钥长度有关,我是用的接口是117),你需要自己把数据变成N个117字节的数据段来完成加密,解密也需要自己完成字节拼装。详细还是建议你去后盾人平台去看看视频教学吧,那里面有的,讲的很清楚。
rsa算法公式推导?RSA算法是非对称加密算法,主要由公开密钥和私有密钥组成,其中公钥可用于加密,私钥可用于解密。下面是RSA算法的一些重要公式:
1. 求质数
RSA算法中一个核心的步骤是选取两个大质数p和q,并令n = p * q。此处略去求质数的步骤。
2. 计算欧拉函数
令φ(n) = (p - 1) * (q - 1)。φ(n)代表小于n且与n互质的正整数的个数,是RSA算法中另一个重要的参数,将用于后续计算。
3. 选择公钥
选取一个小于φ(n)且与φ(n)互质的正整数e作为公钥,通常选取的是65537,因为65537是一个质数,加密解密速度比较快。
4. 计算私钥
根据扩展欧几里得算法,可以计算出对任意整数a和b有一个等式:ax + by = gcd(a, b),其中gcd(a, b)代表a和b的最大公因数。在RSA算法中,选择的e和φ(n)都是互质的,因此可以用扩展欧几里得算法求解d的值,满足de mod φ(n) = 1,d被作为私钥。
5. 加密解密
设要加密的明文为m,密文为c,加密公式为 c = m^ e mod n。假设接收到密文c,解密后的明文为m,解密公式为 m = c^ d mod n。
总结一下RSA算法的流程:选取两个大质数p和q,令n = p * q,计算φ(n),选取公钥e,计算私钥d,加密和解密。其中,公钥由(n, e)组成,私钥由(n, d)组成。
RSA怎样设置公钥和私钥?从理论上来说是可以的。首先,我们来看RSA算法的定义:
选取两个大质数,,计算
任意选择一正整数,使得与互质。
根据计算的值。
公钥
私钥
加密过程 (C为密文,P为明文):
解密过程
RFC 2313 - PKCS #1: RSA Encryption Version 1.5
中,建议公钥的的值选择是3或65537()。这样,公钥加密、私钥签名的模乘运算次数可以降低到2次()和17次(),可以显著的提高在实际应用中RSA算法的效率。
到此,以上就是小编对于“php_rsa_65537”的问题就介绍到这了,希望介绍关于“php_rsa_65537”的【3】点解答对大家有用。