导航:首页 > 文档加密 > phprsa加密类

phprsa加密类

发布时间:2022-02-17 01:23:32

A. php中怎么使用rsa实现加密解密代码详解

这个问题字数超出了我待会追答,答题不易,互相理解,您的采纳是我前进的动力,感谢您。希望回答对你有帮助,如果有疑问,在后盾人上有详解

B. RSA加密解密网在PHP中.问题,怎么解决

举例:

function rsaSign($data,$private_key) { $res = openssl_get_privatekey($private_key); // $data=sha1($data); //sha1加密(如果需要的话,如果进行加密,则对方也要进行加密后做对比) openssl_sign($data, $sign, $res,OPENSSL_ALGO_SHA1);//加签,可以指定加密方式 openssl_free_key($res); //base64编码 $sign = base64_encode($sign); return $sign;}

C. ThinkPHP Rsa加密类怎么用

<?php
namespacelibs;

classRsa{
privatestatic$PRIVATE_KEY;
privatestatic$PUBLIC_KEY;
function__construct($pubKey='',$privKey=''){
self::$PUBLIC_KEY=$pubKey;
self::$PRIVATE_KEY=$privKey;
}


($input)
{
$remainder=strlen($input)%4;
if($remainder){
$padlen=4-$remainder;
$input.=str_repeat('=',$padlen);
}
returnbase64_decode(strtr($input,'-_','+/'));
}


($input)
{
returnstr_replace('=','',strtr(base64_encode($input),'+/','-_'));
}


(){
$privKey=self::$PRIVATE_KEY;
returnopenssl_pkey_get_private($privKey);
}


(){
$pubKey=self::$PUBLIC_KEY;
returnopenssl_pkey_get_public($pubKey);
}


($data)
{
if(!is_string($data)){
returnnull;
}
returnopenssl_private_encrypt($data,$encrypted,self::getPrivateKey())?self::urlsafeB64Encode($encrypted):null;
}


($encrypted)
{
if(!is_string($encrypted)){
returnnull;
}
return(openssl_private_decrypt(self::urlsafeB64Decode($encrypted),$decrypted,self::getPrivateKey()))?$decrypted:null;
}


($data)
{
if(!is_string($data)){
returnnull;
}
returnopenssl_public_encrypt($data,$encrypted,self::getPublicKey())?self::urlsafeB64Encode($encrypted):null;
}


($encrypted)
{
if(!is_string($encrypted)){
returnnull;
}
return(openssl_public_decrypt(self::urlsafeB64Decode($encrypted),$decrypted,self::getPublicKey()))?$decrypted:null;
}
}
?>

D. php rsa/no/padding加密怎么实现

Java和PHP RSA加密实现互通
1:通过openssl 生成公钥和密钥文件(Linux)
(1) 生产私钥文件命令
openssl genrsa -out rsa_private_key.pem 1024
(2) 通过私钥文件生成公钥命令
openssl rsa -in rsa_private_key.pem -out rsa_public_key.pem -pubout

(3) 将传统格式的私钥转换成 PKCS#8 格式的的密钥文件
openssl pkcs8 -topk8 -in rsa_private_key.pem -outpkcs8_rsa_private_key.pem -nocrypt

E. php 如何生成rsa加密的公钥和私钥

用Zend的加密吧,但是还是可以解密的,这也没办法,凡是对称加密或非不可逆的加密算法,均可以解密,这只是时间问题。

特别是没有密码的加密(不可逆除外)。

可以这样,使用AES加密,再用GZIP压缩,然后运行时解密,在eval那些代码。

前提是每个加密的文件的密码都不同,要购买才可以解密运行。

F. php rsa 公钥私钥怎么生成啊,生成后如何才能加密解密网上的资料很多但都是乱七八糟的

http://blog.csdn.net/linvo/article/details/8543118
别人的,写的挺详细的,可以参考下,里面还有demo

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

这方面的话我不是很了解,一般来说,加密分为两个部分,一个是非对称加密,一个是对称加密,使用对称加密加密正文信息,使用非对称加密加密对称加密的密钥,然后发送加密数据(消息摘要和数字签名就不讨论了),这是正规的数据加密策略,对称加密默认支持大数据分段加密策略,你只需要从接口中完成加密即可,而且对称加密速度比非对称加密快很多,如果你需要使用这个策略建议使用AES。
如果你不愿意使用对称加密,只愿意使用AES加密,那你就必须丧失速度了,而且自己处理分段加密,因为RSA加密通常是117个字节就要分段(这个长度可能和密钥长度有关,我是用的接口是117),你需要自己把数据变成N个117字节的数据段来完成加密,解密也需要自己完成字节拼装。详细还是建议你去后盾人平台去看看视频教学吧,那里面有的,讲的很清楚。

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

附上出处链接:http://bbs.csdn.net/topics/370014844

四,用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();
$e =$math_obj->hexstr($math_obj->bin2int($public_key->getExponent()));
$d =$math_obj->hexstr($math_obj->bin2int($private_key->getExponent()));
$n =$math_obj->hexstr($math_obj->bin2int($public_key->getMolus()));
}

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

function hexstr($num){
return gmp_strval($num,16);
}

对Crypt_RSA_Math_BCMath略麻烦些:

function hexstr($num){
$result = '';
do{
$result = sprintf('%02x',intval(bcmod($num,256))).$result;
$num = bcdiv($num, 256);
}while(bccomp($num, 0));
return ltrim($result,'0');
}

五,用php生成密钥(二)

为了提高加密速度,一般选一个较小的e。比较常用的是3、17、257、65537几个素数。

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)

把CRYPT_RSA-1.0.0的KeyPair.php中属于generate()的245~271行改动顺序,由e确定p和q:

if($e != null&&$this->_math_obj->cmpAbs($e,2)>0)
$e = $this->_math_obj->nextPrime($this->_math_obj->dec($e));//取个素数
else
{
while(true)
{
$e = $this->_math_obj->getRand($q_len, $this->_random_generator);
if ($this->_math_obj->cmpAbs($e,2)<=0)
continue;
$e = $this->_math_obj->nextPrime($this->_math_obj->dec($e));
break;
}
}
do{
$p = $this->_math_obj->getRand($p_len, $this->_random_generator, true);
$p = $this->_math_obj->nextPrime($p);
do{
do{
$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 molus
$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))))
break;
}while(true);

(网易的服务真体贴啊,连pre标记里面的东西都给改。还改不好)这样,如果要生成e为3的1024位密钥,可以如下调用:

$key_pair = new Crypt_RSA_KeyPair(1024,3);

六,干什么用

加密比较重要的数据。比如注册时用户输入的密码。
登录时把密码hmac一下就可以防止重放攻击(replay attack)了。对注册不存在这种攻击,但有密码泄露的危险。上传密码hash那点安全性根本不算什么。这个可以用RSA加密解决。
不过,对中间人攻击还是没办法。

另外一个

http://www.mingup.cn/php/2011/0121/101568.html

I. php rsa公钥加密的问题!

公钥不对,你检查一下,或者是常量的问题

阅读全文

与phprsa加密类相关的资料

热点内容
怎么查找云服务器上的ftp 浏览:152
我的世界服务器如何注册账号 浏览:932
统计英文字符python 浏览:423
linux信息安全 浏览:908
压缩机接线柱爆 浏览:999
程序员自主创业 浏览:584
汇编程序员待遇 浏览:359
怎么批量有顺序的命名文件夹 浏览:211
杭州程序员健身 浏览:19
dvd光盘存储汉子算法 浏览:758
苹果邮件无法连接服务器地址 浏览:963
phpffmpeg转码 浏览:672
长沙好玩的解压项目 浏览:145
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:737
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:486
h3c光纤全工半全工设置命令 浏览:143