PHP openssl 签名

烦恼的大胖 发布于 2012/03/06 10:28
阅读 1K+
收藏 0
小弟日前在做一个充值的接口,但接口文档中只有PYTHON的示例,这边需要用PHP来实现,但始终是签名错误,不知道其中的算法是否写的有误

PYTHON的示例:

5.3.1. 签名
(1) 得到
site_id+user_id+order_id+order_time+bn_ac+game+game_ac+reason+pts 假
设该值为plain
(2) 使用SHA1 算法对plain 生成报文摘要, 如, digest =
hashlib.sha1(plain).digest()
(3) 加载私钥文件, 使用RSA 算法, 对报文摘要加密, 如,pri_key =
RSA.load(key_file) , signature = pri_key.sign(digest)
(4) 为了使签名后的数据,能方便得在互联网上传输,需要将signature 值进
行hex(十六进制)化,如,hex_val = binascii.hexlify(signature)
(5) 最后将hex_val 值放入sign 字段作为签名数据
(6) 按照以上步骤产生的签名数据,一定是256 字节长

我的PHP方法:

private function toSign($str)
	{	
		$priKeyContent = file_get_contents($this->wy_file_prikey);
		$priKey = openssl_get_privatekey($priKeyContent);
		openssl_sign(sha1($str,true),$crypted,$priKey);//对参数进行SHA1编码及私钥加密 默认OPENSSL_ALGO_SHA1
		$encryptDate = bin2hex($crypted); //按要求进行hex 16进制转换,生成256字节长度结果
		return $encryptDate;
	}


望指教~~!!万分感谢!!!
加载中
返回顶部
顶部