php中rsa加密及解密和签名及验签
2016-11-16 20:04
253 查看
加密的内容长度限制为密钥长度少11位,如128位的密钥最多加密的内容为117个长度。
公钥加密
$public_content=file_get_contents(公钥路径);
$public_key=openssl_get_publickey($public_content);
$original_str='待加密的内容';
$original_arr=str_split($original_str,117); //折分
foreach($original_arr as $o)
{
$sub_enc=null;
openssl_public_encrypt($o,$sub_enc,$public_key);
$original_enc_arr[]=$sub_enc;
}
openssl_free_key($public_key);
$original_enc_str=base64_encode(implode('',$original_enc_arr));//最终网络传的密文
私钥解密
$private_content=file_get_contents(私钥路径);
$private_key=openssl_get_privatekey($private_content);
$original_enc_str=base64_decode(密文);
$orig_dec_str='';
for($i=0;$i<strlen($original_enc_str)/128;$i++)
{
$data=substr($original_enc_str,$i*128,128);
openssl_private_decrypt($data,$decrypt,$private_key);
$orig_dec_str.=$decrypt;
}
$orig_dec_str为最后解密出来的。
注:私钥加密及公钥解密同理。
-----------------------------------------------------------------------------------------------------------------------
私钥签名
$private_content=file_get_contents(私钥路径);
$private_key=openssl_get_privatekey($private_content);
$original_str='';//原数据
openssl_sign($original_str,$sign,$private_key);
openssl_free_key($private_key);
$sign=base64_encode($sign);//最终的签名
公钥验签
$public_content=file_get_contents(公钥路径);
$public_key=openssl_get_publickey($public_content);
$sign=base64_decode($sign)'';//得到的签名
$original_str='';得到的数据
$result=(bool)openssl_verify($original_str,$sign,$public_key);
openssl_free_key($public_key);
$result为真时签验通过,假时未通过
公钥加密
$public_content=file_get_contents(公钥路径);
$public_key=openssl_get_publickey($public_content);
$original_str='待加密的内容';
$original_arr=str_split($original_str,117); //折分
foreach($original_arr as $o)
{
$sub_enc=null;
openssl_public_encrypt($o,$sub_enc,$public_key);
$original_enc_arr[]=$sub_enc;
}
openssl_free_key($public_key);
$original_enc_str=base64_encode(implode('',$original_enc_arr));//最终网络传的密文
私钥解密
$private_content=file_get_contents(私钥路径);
$private_key=openssl_get_privatekey($private_content);
$original_enc_str=base64_decode(密文);
$orig_dec_str='';
for($i=0;$i<strlen($original_enc_str)/128;$i++)
{
$data=substr($original_enc_str,$i*128,128);
openssl_private_decrypt($data,$decrypt,$private_key);
$orig_dec_str.=$decrypt;
}
$orig_dec_str为最后解密出来的。
注:私钥加密及公钥解密同理。
-----------------------------------------------------------------------------------------------------------------------
私钥签名
$private_content=file_get_contents(私钥路径);
$private_key=openssl_get_privatekey($private_content);
$original_str='';//原数据
openssl_sign($original_str,$sign,$private_key);
openssl_free_key($private_key);
$sign=base64_encode($sign);//最终的签名
公钥验签
$public_content=file_get_contents(公钥路径);
$public_key=openssl_get_publickey($public_content);
$sign=base64_decode($sign)'';//得到的签名
$original_str='';得到的数据
$result=(bool)openssl_verify($original_str,$sign,$public_key);
openssl_free_key($public_key);
$result为真时签验通过,假时未通过
相关文章推荐
- php rsa 加密,解密,签名,验签详解
- PHP中RSA加密与解密及签名与验证
- php rsa 加密、解密、签名、验签
- php rsa 加密、解密、签名、验签
- php中rsa加密及解密和签名及验签
- 客户端和php服务器通信rsa加密解密
- RSA加密解密及RSA签名和验证
- RSA应用之---加密、解密、数据签名、数据签名验证、哈希值签名、哈希值签名验证
- RSA加密解密及RSA签名和验证
- python实现aes加密解密,RSA签名和验签,RSA加密解密,并调用接口
- C#中RSA加密解密和签名与验证的实现
- 跨语言平台的RSA加密、解密、签名、验证算法的实现
- C#中RSA加密解密和签名与验证的实现
- RSA加密解密及RSA签名和验证(转)
- php openssl rsa 加密解密应用
- RSA加密解密及RSA签名和验证
- RSA加密解密及RSA签名和验证
- RSA加密与解密、数字签名与验证数字签名
- 转载:C#中RSA加密解密和签名与验证的实现