网站建设资讯

NEWS

网站建设资讯

php签名数据串,php 签名

php如何做数字签名?

概括就是:“学会用PHP的openssl扩展!!”

成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的防城港网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

1、先用openssl_pkey_new()函数产生一个私钥pri_key,

2、用openssl_csr_new()函数以私钥pri_key 产生一个信用证csr

3、用openssl_sign()函数以私钥pri_key对一段数据data产生一个数字签名signature。

4、用openssl_pkey_get_public()函数从信用证csr中获得公钥pub_key

5、把公钥pub_key、数字签名signature、数据data发给对方。

6、对方收到3项后,用openssl_verify()函数或其他验证工具,验证签名。

7、对方验证有效,开始使用你的信息data。验证无效,再找你扯皮。

整个过程的双方可以互换,即可让对方出具三项,你来验证。

PHP+JS如何实现网上签名功能?

通过 js canvas给用户进行签名,提交时候生成图片/base64.

PHP接收图片/base64保存到服务器对应路径,把路径入库.

用PHP如何实现数字签名啊··跪求高人指点···

以下是资料:

php中数字签名与校验

1. 先用php生成一对公钥和私钥

$res = openssl_pkey_new();

openssl_pkey_export($res,$pri);

$d= openssl_pkey_get_details($res);

$pub = $d['key'];

var_dump($pri,$pub);

输出依次为私钥和公钥的pem字串,如:

string(916) "-----BEGIN PRIVATE KEY-----

MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAKs124okAnX5jh1Q

wsETi80b4ZyYlYUSsAtvS7ZG+GSLAox24TKNwWIy5cUdKfK/5QEJjZ0S8LjRSYCG

to9LkwQTQrKY8BBXVCQQS3VXRqz4on9bmcGSyLMK6vQxt9NnJpk6aBmJE7z35+8z

TTLwdUbYaMAcYqrsYDfgBSNBgwbDAgMBAAECgYBvolJfpFMmcW3El6AlHIWPW5qj

7KmxdxnqmssXMvdLN4iV5f24ZM2vJdjDydxMN+st3fjEblEfcPcoIq5uiKx2bnO3

f9g0yt+qUoXdz4LK6jV1NfuAZDcnBm7CXfE7BDREgyiRg4ZXIvp4L0Y2zBMdFTmg

LKkXb2M1P3pK53UbwQJBANupqPXFQjdHvAa3voT+UI8OhmLbw/Vyh6Ii1glwMfyq

VS2lAakj9d1hqLYZvw+eNeZBnzZNPuMJg5aj/WKUqasCQQDHiFLS7Yb1rbhfjmRt

ZL4zXuvX1hVjTNo2TeZwPniGpYa+QHcauDDep5C9q//n+D+ZtkbkECxpOVhrUHSI

KO9JAkEApl3lHd98uymVevEHVurWUMMLfSw9SlSn7WC9AwD6mwbW5G8oxtX5jOY+

RU1Sq52D7RSeZR40FvhJtXoWmudFaQJAc8E+a2epF/YENEtjL6N2RE8Y+0oTdlwr

a72dphhXy6VTmiPD9RhOIZ2MdrzF5Uk7fG0mi0Bmw1SlWvx93lABIQJBALXPeoNa

b4dQkRkfqCHtyrWOeRcC1Y6FyTfNj+cRBzdIcmFc21hxj6HKy2M6/XGI3rAE5L+B

mmlSmN1enhoCUqc=

-----END PRIVATE KEY-----

"

string(272) "-----BEGIN PUBLIC KEY-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrNduKJAJ1+Y4dUMLBE4vNG+Gc

mJWFErALb0u2RvhkiwKMduEyjcFiMuXFHSnyv+UBCY2dEvC40UmAhraPS5MEE0Ky

mPAQV1QkEEt1V0as+KJ/W5nBksizCur0MbfTZyaZOmgZiRO89+fvM00y8HVG2GjA

HGKq7GA34AUjQYMGwwIDAQAB

-----END PUBLIC KEY-----

"

2. 保存好自己的私钥,把公钥可以公开给别人。如果需要对某数据进行签名,证明那数据是从你这里发出的,就需要用私钥:

$res = openssl_pkey_get_private($pri);

if (openssl_sign('hello', $out, $res))

var_dump(base64_encode($out));

上例中 $pri 为自己的私钥,'hello' 为待签名的数据,如果签名成功,最后输出为base64编码后的签名,如:

j19H+C/NQEcyowezOQ+gmGi2UoPJNXyJ+KwpkEzJ5u4qaRD3cY4qhfFfIosypypwJTJ4LjRYOIPNQMQm6ICj2nMdGfn/p/pp7il+xGz2aUWdOXkJFgIc/PGC95C9sLH04Tc6QSuV5IMd9rjBjyv+ieokMLFm9cmtN2hGag9vq1s=

3. 别人收到你的数据 'hello' 和签名字串,想验证这是从你发来的数据的话,用你公开的公钥验证:

$sig = base64_decode($sig);

$res = openssl_pkey_get_public($pubkey);

if (openssl_verify('hello', $sig, $res) === 1)

; // 通过验证

上例中刚开始的 $sig 为之前你base64编码过的签名, $pubkey 为你的公钥

php中这种签名使用的是RSA算法;数字签名可以在 单点登录 等系统中派上用场。

PHP 做签名时出现这个,怎么回事

您的公钥,私钥错误了。

通过openssl工具生成RSA的公钥和私钥(opnssl工具可在互联网中下载到,也可以点此下载无线接口包,里面包含此工具)

打开openssl文件夹下的bin文件夹,执行openssl.exe文件:

1)生成RSA私钥

输入“生成命令.txt”文件中:“genrsa -out rsa_private_key.pem 1024”,并回车得到生成成功的结果,如下图:

此时,我们可以在bin文件夹中看到一个文件名为rsa_private_key.pem的文件,用记事本方式打开它,可以看到-----BEGIN RSA PRIVATE KEY-----开头,-----END RSA PRIVATE KEY-----结尾的没有换行的字符串,这个就是原始的私钥。

2)把RSA私钥转换成PKCS8格式

输入命令:pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt,并回车当前界面中会直接显示出生成结果,这个结果就是PKCS8格式的私钥,如下图:

右键点击openssl窗口上边边缘,选择编辑→标记,选中要复制的文字(如上图),

此时继续右键点击openssl窗口上边边缘,选择编辑→复制,

把复制的内容粘土进一个新的记事本中,可随便命名,只要知道这个是PKCS8格式的私钥即可。

3)生成RSA公钥

输入命令:rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem,并回车,得到生成成功的结果,如下图:

此时,我们可以在bin文件夹中看到一个文件名为rsa_public_key.pem的文件,用记事本方式打开它,可以看到-----BEGIN PUBLIC KEY-----开头,-----END PUBLIC KEY-----结尾的没有换行的字符串,这个就是公钥。

PHP怎么做银联的支付接口调用

PHP做银联支付接口调用问题

//在工商支付接口之前要找到工行提供的接口文件级dll文件

//将订单签名数据公钥加密提供给工行指定页面

//组织要签名的数据串

$src="ICBC_PERBANK_B2C1.0.0.0".$infomer["merid"].$infomer["meracct"].$returnaddress."HS".$ddnumber.$amount."0010".$nowtime."0";

$com=new com('ICBCEBANKUTIL.B2CUtil');

$rc=$com-init("c:\WINDOWS\user.crt","c:\WINDOWS\user.crt","c:\WINDOWS\user.key","11111111");

$ssrc=$com-signC($src, strlen($src)); //订单签名数据

$rc=$com-verifySignC($src,strlen($src), $ssrc, strlen($ssrc));

$cert=$com-getCert(1); //商城证书公钥

//将商户证书存储到c:\WINDOWS目录下,然后创建form表单,将指定的数据提交到工行指定的网页中

!--支付宝支付的接口操作,提交的数据--

td width="100"a href="{$link}"img src="images/sy_19.gif" width="90" height="25" border="0"/a/td

!--——————————————————--

!--工行支付的接口操作,提交的数据--

form action="" method="post" name="form_bank"

input name="interfaceName" type="hidden" value="ICBC_PERBANK_B2C"/

input name="interfaceVersion" type="hidden" value="1.0.0.0"/

input name="orderid" type="hidden" value="{$ddnumber}"/

input name="amount" type="hidden" value="{$amount}"/

input name="curType" type="hidden" value="001"/

input name="merID" type="hidden" value="{$merid}"/

input name="merAcct" type="hidden" value="{$meracct}"/

input name="verifyJoinFlag" type="hidden" value="0"/

input name="notifyType" type="hidden" value="HS"/

input name="merURL" type="hidden" value="{$returnaddress}"/

input name="resultType" type="hidden" value="0"/

input name="orderDate" type="hidden" value="{$nowtime}"/

input name="merSignMsg" type="hidden" value="{$ssrc}" /

input name="merCert" type="hidden" value="{$cert}" /

/form


本文题目:php签名数据串,php 签名
文章位置:http://njwzjz.com/article/dsehdgg.html