入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

支付宝支付接入(安全基础 - 生成公钥、私钥)

创建时间:2016-03-11 投稿人: 浏览次数:10904

原文:https://fuwu.alipay.com/platform/doc.htm#c02

一、概述

支付宝支付采用了RSA加密签名的安全通信机制,开发者可以通过支付宝的公钥验证消息的来源,同时使用自己的私钥进行信息加密。RSA算法及数字签名机制是服务窗平台与开发者网关安全通信的基础,如果开发者对RSA及数字签名并不熟悉,请先参考《数字签名简介》。

二、RSA密钥使用指南

OpenSSL工具安装

  1. Linux用户(以Ubuntu为例)

     sudo apt-get install openssl
    
  2. Windows用户开发者可以在OpenSSL官方网站下载Windows的OpenSSL安装包进行安装

RSA私钥及公钥生成

  1. Linux用户(以Ubuntu为例)

     $ openssl   进入OpenSSL程序
     OpenSSL> genrsa -out rsa_private_key.pem 1024   生成私钥
     OpenSSL> pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt     Java开发者需要将私钥转换成PKCS8格式
     OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem    生成公钥
     OpenSSL> exit   
  2. Windows用户 以下操作在cmd窗口使用

     C:UsersHammer>cd C:OpenSSL-Win32in     进入OpenSSL安装目录
     C:OpenSSL-Win32in>openssl.exe            进入OpenSSL程序
     OpenSSL> genrsa -out rsa_private_key.pem 1024   生成私钥
     OpenSSL> pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt     Java开发者需要将私钥转换成PKCS8格式
     OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem    生成公钥
     OpenSSL> exit   

注意:对于使用Java的开发者,将pkcs8在console中输出的私钥去除头尾、换行和空格,作为开发者私钥,对于.NET和PHP的开发者来说,无需进行pkcs8命令行操作。

私钥及公钥文件示例

经过以上步骤,开发者可以在当前文件夹中(Windows用户在C:OpenSSL-Win32in)看到rsa_private_key.pem和rsa_public_key.pem两个文件,前者为私钥,后者为公钥。开发者将私钥保留,将公钥提交给支付宝网关,用于信息加密及解密。以下为使用OpenSSL生成的私钥文件和公钥文件示例。

  1. 标准的私钥文件示例(PHP、.NET使用)

     -----BEGIN RSA PRIVATE KEY-----
     MIICXQIBAAKBgQC+L0rfjLl3neHleNMOsYTW8r0QXZ5RVb2p/vvY3fJNNugvJ7lo
     4+fdBz+LN4mDxTz4MTOhi5e2yeAqx+v3nKpNmPzC5LmDjhHZURhwbqFtIpZD51mO
     fno2c3MDwlrsVi6mTypbNu4uaQzw/TOpwufSLWF7k6p2pLoVmmqJzQiD0QIDAQAB
     AoGAakB1risquv9D4zX7hCv9MTFwGyKSfpJOYhkIjwKAik7wrNeeqFEbisqv35Fp
     jGq3Q1oJpGkem4pxaLVEyZOHONefZ9MGVChT/MNH5b0FJYWl392RZy8KCdq376Vt
     4gKVlABvaV1DkapL+nLh7LMo/bENudARsxD55IGObMU19lkCQQDwHmzWPMHfc3kd
     Y6AqiLrOss+MVIAhQqZOHhDe0aW2gZtwiWeYK1wB/fRxJ5esk1sScOWgzvCN/oGJ
     LhU3kipHAkEAysNoSdG2oWADxlIt4W9kUiiiqNgimHGMHPwp4JMxupHMTm7D9XtG
     UIiDijZxunHv3kvktNfWj3Yji0661zHVJwJBAM8TDf077F4NsVc9AXVs8N0sq3xz
     qwQD/HPFzfq6hdR8tVY5yRMb4X7+SX4EDPORKKsgnYcur5lk8MUi7r072iUCQQC8
     xQvUne+fcdpRyrR4StJlQvucogwjTKMbYRBDygXkIlTJOIorgudFlrKP/HwJDoY4
     uQNl8gQJb/1LdrKwIe7FAkBl0TNtfodGrDXBHwBgtN/t3pyi+sz7OpJdUklKE7zM
     SBuLd1E3O4JMzvWP9wEE7JDb+brjgK4/cxxUHUTkk592
     -----END RSA PRIVATE KEY-----
    
  2. PKCS8处理后的私钥文件示例(Java使用)

     -----BEGIN PRIVATE KEY-----
     MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAN0yqPkLXlnhM+2H
     /57aHsYHaHXazr9pFQun907TMvmbR04wHChVsKVgGUF1hC0FN9hfeYT5v2SXg1WJ
     Sg2tSgk7F29SpsF0I36oSLCIszxdu7ClO7c22mxEVuCjmYpJdqb6XweAZzv4Is66
     1jXP4PdrCTHRdVTU5zR9xUByiLSVAgMBAAECgYEAhznORRonHylm9oKaygEsqQGk
     YdBXbnsOS6busLi6xA+iovEUdbAVIrTCG9t854z2HAgaISoRUKyztJoOtJfI1wJa
     QU+XL+U3JIh4jmNx/k5UzJijfvfpT7Cv3ueMtqyAGBJrkLvXjiS7O5ylaCGuB0Qz
     711bWGkRrVoosPM3N6ECQQD8hVQUgnHEVHZYtvFqfcoq2g/onPbSqyjdrRu35a7P
     vgDAZx69Mr/XggGNTgT3jJn7+2XmiGkHM1fd1Ob/3uAdAkEA4D7aE3ZgXG/PQqlm
     3VbE/+4MvNl8xhjqOkByBOY2ZFfWKhlRziLEPSSAh16xEJ79WgY9iti+guLRAMra
     vGrs2QJBAOmKWYeaWKNNxiIoF7/4VDgrcpkcSf3uRB44UjFSn8kLnWBUPo6WV+x1
     FQBdjqRviZ4NFGIP+KqrJnFHzNgJhVUCQFzCAukMDV4PLfeQJSmna8PFz2UKva8f
     vTutTryyEYu+PauaX5laDjyQbc4RIEMU0Q29CRX3BA8WDYg7YPGRdTkCQQCG+pjU
     2FB17ZLuKRlKEdtXNV6zQFTmFc1TKhlsDTtCkWs/xwkoCfZKstuV3Uc5J4BNJDkQ
     OGm38pDRPcUDUh2/
     -----END PRIVATE KEY-----
    
  3. 公钥文件示例

     -----BEGIN PUBLIC KEY-----
     MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQWiDVZ7XYxa4CQsZoB3n7bfxL
     DkeGKjyQPt2FUtm4TWX9OYrd523iw6UUqnQ+Evfw88JgRnhyXadp+vnPKP7unorm
     YQAfsM/CxzrfMoVdtwSiGtIJB4pfyRXjA+KL8nIa2hdQy5nLfgPVGZN4WidfUY/Q
     pkddCVXnZ4bAUaQjXQIDAQAB
     -----END PUBLIC KEY-----

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。