近日BD登陆改版,密码经过JS用Rsa算法加密提交,因为须要模拟登陆BD,因此不得不去仔细研究Rsa算法。 通过研究发现,BD的Rsa至关的Low. 很少说,直接上PHP实现的模拟百度JS实现的Rsa加密。算法
$pubkey = file_get_contents("public.pem"); //echo $pubkey . "<br>"; $pwd = $_POST['pwd']; //密码明文 //echo $pwd . "<br>"; $pubkeyObj = openssl_get_publickey($pubkey); //openssl 读取并解析公钥 //var_dump($pubkeyObj); openssl_public_encrypt($pwd, $encrypt_pwd, $pubkeyObj, OPENSSL_PKCS1_PADDING); //加密 //var_dump($encrypt_pwd); $encrypt_pwd = base64_encode(''.$encrypt_pwd); echo $encrypt_pwd; //加密后的密码
其中public.pem是公钥文件,内容以下:加密
-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnn8lJNWp9At07NnRhKruMz+Xk khVIlS0LhrSu3JiKdxGRbG//hP3Vcgj8Yu+qlTyofK+1PiUvDATgbV6a8IiO1zhJ /9dL/xLpH81q4drll2NauXGD7UztRV4MQE1Mi2E57STyK4AevxV5iCAPwuHNZ3os mJ7Dr6WcsovXSvdspwIDAQAB -----END PUBLIC KEY-----
但愿对作BD登陆的朋友有帮助。code