PHP怎么用16进制公钥进行RSA加密

weixin_38067822 2017-09-12 04:33:25
已经16进制公钥:C34E069415AC02FC4EA5F45779B7568506713E9210789D527BB89EE462662A1D0E94285E1A764F111D553ADD7C65673161E69298A8BE2212DF8016787E2F4859CD599516880D79EE5130FC5F8B7F69476938557CD3B8A79A612F1DDACCADAA5B6953ECC4716091E7C5E9F045B28004D33548EC89ED5C6B2C64D6C3697C5B9DD3 请问用php怎么用16进制的公钥进行rsa加密???
...全文
120 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38108060 2019-04-11
  • 打赏
  • 举报
回复
解决了吗?求教
JAVaOLDsiji 2019-04-11
  • 打赏
  • 举报
回复

/**
* 加密
*
* @param string 明文
* @param string 公钥/私钥加密
* @param string 密文编码(base64/hex/bin)
* @param int 填充方式
* @return string 密文
*/
public function encrypt($data, $mode = 'public', $code = 'base64', $padding = OPENSSL_PKCS1_PADDING)
{
$ret = false;
if (!$this->_checkPadding($padding, 'en')) $this->_error('padding error');
if($mode=='public'){
if (openssl_public_encrypt($data, $result, $this->pubKey, $padding)) {
$ret = $this->_encode($result, $code);
}
}else{
if (openssl_private_encrypt($data, $result, $this->priKey, $padding)) {
$ret = $this->_encode($result, $code);
}
}
return $ret;
}  
weixin_38121944 2019-04-11
  • 打赏
  • 举报
回复
1.请确认你输入的公钥是base64编码过的数据。 2.如果你的公钥是base64编码过的,直接调用这个方法就可以了: openssl_public_encrypt($data, $encrypt_data, $pubkey); 这个方法有三个参数,第一个$data是需要加密的字符串,$encrypt_data是加密后生成的字符串,而$pubkey则是你的公钥,而这个公钥上面说的必须base64编码。 $encrypt_data 生成的加密内容一般也需要base64编码,代码如下:
$encrypt_data = base64_encode($encrypt_data);
当然这个也看你存储到数据库里的规则了。 总之,在非对称加密的方法中,公钥只能用来加密,而私钥则是用来解密。所以一般公钥公开在客户端,而私钥在服务端,为了防止客户端发送的数据被拦截所以在客户端加密,所以这里就引出了签名,也就是通过hash拿摘要,然后到服务端时检查一下防止被窜改。
weixin_38087180 2017-09-13
  • 打赏
  • 举报
回复
加密必须有私钥,公钥不能用来加密,只能解密.
weixin_38075910 2017-09-13
  • 打赏
  • 举报
回复
有人吗,求救
weixin_38073691 2017-09-12
  • 打赏
  • 举报
回复
openssl_pkey_get_public()和openssl_public_encrypt两个函数搞定,一般会对加密内容先进行base64加密,内容过长需要分段加密

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧