Login
网站首页 > 文章中心 > 其它

关于php等通用rsa加密的信息

作者:小编 更新时间:2023-09-26 13:40:58 浏览量:43人看过

php中aes加密和rsa加密的区别

这个跟php没有关系,单纯的是两个密码学的算法.如果真想搞清楚区别,你需要有密码学的基础知识.

我简单说一下,这两个都是标准的密码学算法,应用广泛.AES是一个对称加密算法,常常用于对数据进行加密,RSA是一个非对称(公钥)加密算法,常常用于对AES加密用的密钥进行加密,或者进行数字签名等.

至于对称加密算法和非对称加密算法的区别说起来就越来越多了.你只要知道以下事实就好:

对称加密算法加解密密钥相同,而非对称加密算法加解密密钥不同

对称加密算法相对于非对称加密算法而言往往加解密速度很快

非对称加密算法具有任何有公钥的人都能加密数据,但是只有有私钥的人才能解密数据的特点

php 怎么生成rsa加密的公钥和私钥

附上出处链接:

四,用PHP生成密钥

PEAR::Crypt_RSA的Crypt_RSA_KeyPair类可以生成密钥.调用步骤如下:

require_once('Crypt/RSA.php');

$math_obj = Crypt_RSA_MathLoader::loadWrapper();

$key_pair = new Crypt_RSA_KeyPair($key_lenth);

if (!$key_pair-isError()){

$public_key = $key_pair-getPublicKey();

$private_key = $key_pair-getPrivateKey();

}

hexstr()是自己添加的函数,用来把十进制字符串转换为十六进制.对Crypt_RSA_Math_GMP很简单,只需:

function hexstr($num){

对Crypt_RSA_Math_BCMath略麻烦些:

$result = '';

do{

}while(bccomp($num, 0));

return ltrim($result,'0');

五,用php生成密钥(二)

generate()生成密钥的算法是依次计算p,q,n,e,d.所以呢做了如下改动,以便可以自己选e值:

原来的:

function Crypt_RSA_KeyPair($key_len, $wrapper_name = 'default', $error_handler = '')

改后增加一个参数e:

function Crypt_RSA_KeyPair($key_len, $e = null, $wrapper_name = 'default', $error_handler = '')

这个函数调用generate().效应地:

function generate($key_len = null)

也增加一个参数e:

function generate($key_len = null, $e = null)

$e = $this-_math_obj-nextPrime($this-_math_obj-dec($e));//取个素数

else

{

while(true)

$e = $this-_math_obj-getRand($q_len, $this-_random_generator);

continue;

$e = $this-_math_obj-nextPrime($this-_math_obj-dec($e));

break;

$p = $this-_math_obj-getRand($p_len, $this-_random_generator, true);

$p = $this-_math_obj-nextPrime($p);

$q = $this-_math_obj-getRand($q_len, $this-_random_generator, true);

$tmp_len = $this-_math_obj-bitLen($this-_math_obj-mul($p, $q));

if ($tmp_len $key_len)

$q_len◆◆;

elseif ($tmp_len $key_len)

$q_len--;

} while ($tmp_len != $key_len);

$q = $this-_math_obj-nextPrime($q);

$tmp = $this-_math_obj-mul($p, $q);

} while ($this-_math_obj-bitLen($tmp) != $key_len);

// $n - is shared modulus

$n = $this-_math_obj-mul($p, $q);

// generate public ($e) and private ($d) keys

$pq = $this-_math_obj-mul($this-_math_obj-dec($p), $this-_math_obj-dec($q));

if($this-_math_obj-isZero($this-_math_obj-dec($this-_math_obj-gcd($e, $pq))))

}while(true);

六,干什么用

加密比较重要的数据.比如注册时用户输入的密码.

登录时把密码hmac一下就可以防止重放攻击(replay attack)了.对注册不存在这种攻击,但有密码泄露的危险.上传密码hash那点安全性根本不算什么.这个可以用RSA加密解决.

不过,对中间人攻击还是没办法.

另外一个

php实现rsa算法,该怎么处理

加密的第一步是生成公钥、私钥对,私钥加密的内容能通过公钥解密(反过来亦可以)

openssl?rsa?-in?rsa_private_key.pem?-pubout?-out?rsa_public_key.pem

php中RSA加密,明文超长,需要分段加密该怎么做

一般来说,加密分为两个部分,一个是非对称加密,一个是对称加密,使用对称加密加密正文信息,使用非对称加密加密对称加密的密钥,然后发送加密数据(消息

摘要和数字签名就不讨论了),这是正规的数据加密策略,对称加密默认支持大数据分段加密策略,你只需要从接口中完成加密即可,而且对称加密速度比非对称加

密快很多,如果你需要使用这个策略建议使用AES.

以上就是土嘎嘎小编为大家整理的关于php等通用rsa加密的信息相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章