PHP实现RSA加解密算法(生成密钥位数为1024位的)
来源:互联网 发布:java身份证校验 编辑:程序博客网 时间:2024/05/13 12:58
大家可以先到http://web.chacuo.net/netrsakeypair这个网站,在线生成公钥和私钥
RSA非对称加密算法,如果是公钥加密,就得用私钥解密,反过来也一样,私钥加密的就用公钥解密,以下是相关实现函数
/** * RSA私钥加密 * @param string $private_key 私钥 * @param string $data 要加密的字符串 * @return string $encrypted 返回加密后的字符串 * @author mosishu */function privateEncrypt($private_key,$data){ $encrypted = ''; $pi_key = openssl_pkey_get_private($private_key);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id //最大允许加密长度为117,得分段加密 $plainData = str_split($data, 100);//生成密钥位数 1024 bit key foreach($plainData as $chunk){ $partialEncrypted = ''; $encryptionOk = openssl_private_encrypt($chunk,$partialEncrypted,$pi_key);//私钥加密 if($encryptionOk === false){ return false; } $encrypted .= $partialEncrypted; } $encrypted = base64_encode($encrypted);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的 return $encrypted;}
/** * RSA公钥解密(私钥加密的内容通过公钥可以解密出来) * @param string $public_key 公钥 * @param string $data 私钥加密后的字符串 * @return string $decrypted 返回解密后的字符串 * @author mosishu */function publicDecrypt($public_key,$data){ $decrypted = ''; $pu_key = openssl_pkey_get_public($public_key);//这个函数可用来判断公钥是否是可用的 $plainData = str_split(base64_decode($data), 128);//生成密钥位数 1024 bit key foreach($plainData as $chunk){ $str = ''; $decryptionOk = openssl_public_decrypt($chunk,$str,$pu_key);//公钥解密 if($decryptionOk === false){ return false; } $decrypted .= $str; } return $decrypted;}
//RSA公钥加密function publicEncrypt($public_key,$data){ $encrypted = ''; $pu_key = openssl_pkey_get_public($public_key); $plainData = str_split($data, 100); foreach($plainData as $chunk){ $partialEncrypted = ''; $encryptionOk = openssl_public_encrypt($chunk,$partialEncrypted,$pu_key);//公钥加密 if($encryptionOk === false){ return false; } $encrypted .= $partialEncrypted; } $encrypted = base64_encode($encrypted); return $encrypted;}
//RSA私钥解密function privateDecrypt($private_key,$data){ $decrypted = ''; $pi_key = openssl_pkey_get_private($private_key); $plainData = str_split(base64_decode($data), 128); foreach($plainData as $chunk){ $str = ''; $decryptionOk = openssl_private_decrypt($chunk,$str,$pi_key);//私钥解密 if($decryptionOk === false){ return false; } $decrypted .= $str; } return $decrypted;}
0 0
- PHP实现RSA加解密算法(生成密钥位数为1024位的)
- PHP rsa密钥生成 加密解密
- rsa互通密钥对生成及互通加解密(c#,java,php)
- rsa互通密钥对生成及互通加解密(c#,java,php)
- PHP语言的RSA算法加解密程序
- RSA加解密的实现
- java实现的简单RSA加解密算法
- 使用RSA算法实现对数据的加解密
- Java实现AES的128、256位密钥加解密算法 并 解决Illegal key size or default parameters问题
- rsa初识【php实现简易加解密】
- RSA加/解密算法--python实现
- RSA加解密算法
- RSA 加解密算法
- RSA 加解密算法
- RSA加解密算法
- RSA 加解密算法
- java中RSA加解密的实现
- java中RSA加解密的实现
- 每天一组Linux命令:sync、shutdown、reboot、halt、poweroff、init、systemctl
- 函数返回局部变量探讨
- java中String s="abc"及String s=new String("abc")详解
- 利用SiteScope,在LR中监控和获取mysql的性能计数器
- Mybatis 一对一,一对多,多对一,多对多的理解
- PHP实现RSA加解密算法(生成密钥位数为1024位的)
- PHP中json_encode转码导致的汉字不显示问题
- No input file specified
- python通过sqlalchemy操作mysql和sqlserver
- Eclipse生成jar包并混淆
- 网络请求框架OkHttp改名的OkGo的介绍(以防丢失)
- HDU 4745 (区间dp ,最长非连续回文子序列)
- 【Java并发编程】7、线程池
- ubuntu vagrant 镜像下载地址