RSA 和 OpenSSL 介绍
记得大学里有门课叫《电子支付与安全》,这里面就讲了双重秘钥加密,主要内容如下:
RSA 是一种非对称的签名算法,即签名密钥(私钥)与验签密钥(公钥)是不一样的, 私钥用于签名,公钥用于验签。在与支付宝交易中,会有 2 对公私钥,即商户公私钥,支付宝公私钥。使用这种算法可以起到防止数据被篡改的功能,保证支付订单和支付结果不可抵赖(商户私钥只有商户知道)。
OpenSSL 是基于众多的密码算法、公钥基础设施标准以及 SSL 协议安全开 发包。通过 OpenSSL 生成的签名和内置的算法可以做到跨平台,这样在不同的开发语言中均可以签名和验签。
Windows下OpenSSL安装与使用(本人电脑Window7 x64)
刚开始以为openssl是Windows命令行自带的一个命令呢,结果很不幸--没有。百度了一下Windows下安装和配置openssl结果安装了很多无用的东西,结果只是为了编一个OPenssl。于是乎就百度下载了很多编译后的Openssl,试了很多次,还花了某币在某论坛上下载了。最终找到一份可以使用的Openssl程序。给大家推荐一个网站,可以去那里获取各种版本的Openssl。http://slproweb.com/products/Win32OpenSSL.html。
也可以去附件中自己下载.exe形式的安装包。
将配置文件添加至环境变量(可选)
Openssl安装目录为C:\\alipay 。
有兴趣的童鞋可以将配置文件目录添加到环境变量。
第一步:新建OPENSSL_HOME变量
第二步:新建配置文件环境变量
还可以将安装文件bin目录直接添加到Path变量中,这样就不用每次执行命令还得进入bin目录。
制作公私秘钥
第一步:生成原始商户秘钥
在命令行下进入安装文件bin目录,执行"openssl genrsa -out rsa_private_key.pem 1024",效果如图所示:
在bin目录下生成了私钥文件,进入bin目录查看如下:
第二步:将商户私钥转换成pkcs8格式。
在命令行中执行如下命令:
"openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt"
效果如图所示:
马赛克打的不专业请忽略。
复制key内容从注释-----BEGIN PRIVATE KEY-----(不包括该行注释)至-----END PRIVATE KEY-----止。将复制的内容另存为private_key.txt(去掉空格、换行),请妥善保管,签名时使用。
第三步:生成商户公钥。在命令行执行:
"openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem"
会在C:\\alipay\bin目录下生成rsa_public_key.pem文件。如图所示:
用文本编辑器打开该文件,如下图所示:
删除注释"-----BEGIN PUBLIC KEY-----"和"-----END PUBLIC KEY-----",去掉回车和换行。最后得到一 行字符串并保存至“public_key.txt”文件中。如下图所示:
原文地址:http://lnpusong.blog.51cto.com/6595321/1688976