RES相关,Android支付相关记录

来源:互联网 发布:小米数据分析 编辑:程序博客网 时间:2024/05/16 17:28


Windows 下openssl安装与配置

网上方法很多,大部分是针对32位机的,自己的电脑因为是win7,64位,摸索了很久才安装成功.

 

环境

WIN7, 64位, vs2005


下载ActivePerl

配置过程中需要生成一些mak文件,这些生成代码用perl脚本生成,所以要安装一个ActivePerl.

 

网址: http://www.activestate.com/activeperl/

 

我下载了两个版本:

 

[css] view plain copy 在CODE上查看代码片派生到我的代码片
  1. ActivePerl-5.16.2.1602-MSWin32-x64-296513.msi  
  2. ActivePerl-5.16.2.1602-MSWin32-x86-296513.msi  


装的是第一个版本,第二个版本没装成功.


下载openssl

网址 http://www.openssl.org/

我用的是openssl-0.9.8g版本, 没试过其它版本是否可行.

把openssl-0.9.8g.tar.gz解压到c盘根目录.

 

安装步骤:

(可以参照openssl目录下的install.win32)

1打开命令行

进入openssl源码目录。
cd c:/openssl-0.9.8.g
执行perl Configure VC-WIN32

 

2执行运行ms\do_ms

另外两种方式如果使用也必须保证本机有编译器才能使用。

:ms\do_masm(默认vc自带的编译器;也也以自己下载安装)

:ms\do_nasm(需要自己下载)

 

DOS窗口转到C:\Program Files (x86)\Microsoft Visual Studio 8\VC\bin目录

执行vcvars32.bat以配置环境变量.

 

 

4、跳到openssl目录下,编译动态链接库

cd c:/openssl-0.9.8.g
执行 >nmake -f ms\ntdll.mak

 

如果编译成功,输出在out32dll目录下:包括可执行文件、两个dll和两个lib文件: libeay32.dll, libeay32.lib, ssleay32.dll,ssleay32.lib

 

这里要特别强调一下,这种方法生成的是动库链接库, 也就是我们的应用工程如果要使用openssl, 编译时要指定

lib文件,程序发布时要用到相应的dll. 我遇到过一种情况是, 在win7下发布的使用openssl的程序无法运行,弹出

“运行时初始化相关的错误”, 但是在xp下编译,发布,在其它win7和winXP上都能运行. 估计是win7下没配置好,导致只能本机编译,运行,无法发布.

 

如果要把openssl编译成静态的库,只要把上面的ntdll.mak换成nt.mak就可以了,我试着用了一个静态的库,发现要解决很多编译时的兼容,冲突问题,建议不要使用静态方法.

 

(注意虽然是64位win7, 下生成的也是out32dll, 我也不知道为什么)

 

建立工程

打开vs2005,

在additionalinclude directories加上

"C:\openssl-0.9.8g\include"

这个目录.

 

在additionallibrary directories加上

"C:\openssl-0.9.8g\out32dll"

这个目录

 

代码类似下面这样:

[cpp] view plain copy 在CODE上查看代码片派生到我的代码片
  1. #include<stdio.h>  
  2. #include<stdlib.h>  
  3. #include<string.h>  
  4. #include<time.h>  
  5. #include<openssl/bn.h>  
  6. #include<openssl/ec.h>  
  7. #include<openssl/rand.h>  
  8. #include<openssl/err.h>  
  9. #include<openssl/ecdsa.h>  
  10. #include<openssl/ecdh.h>  
  11. #include"sm2.h"  
  12.    
  13. #pragmacomment(lib,"libeay32.lib")  

编译不会有问题.同样在VC6下,把上面两个目录包含进来,编译也通过.

原博客链接地址:http://blog.csdn.net/pony_maggie/article/details/8588888
参照的word文档:Win7环境中安装OpenSSL的详细步骤.docx

openssl安装文件备份,直接解压到C盘根目录即可使用openssl.zip

openssl 生成公钥 私钥命令行

Windows用户在cmd窗口中进行以下操作:
C:\Users\Hammer>cd C:\OpenSSL-Win32\bin 进入OpenSSL安装目录
C:\OpenSSL-Win32\bin>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 ## 退出OpenSSL程序

正确的生成格式:

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

经过以上步骤,开发者可以在当前文件夹中(Windows用户在C:\OpenSSL-Win32\bin)看到rsaprivatekey.pem和rsapublickey.pem两个文件,前者为私钥,后者为公钥。以下为使用OpenSSL生成的私钥文件和公钥文件示例。

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

    1
    2
    3
    -----BEGIN RSA PRIVATE KEY-----
    MIICXQIBAAKBgQC+L0rfjLl3neHleNMOsYTW8r0QXZ5RVb2p/vvY3fJNNugvJ7lo4+fdBz+LN4mDxTz4MTOhi5e2yeAqx+v3nKpNmPzC5LmDjhHZURhwbqFtIpZD51mOfno2c3MDwlrsVi6mTypbNu4uaQzw/TOpwufSLWF7k6p2pLoVmmqJzQiD0QIDAQABAoGAakB1risquv9D4zX7hCv9MTFwGyKSfpJOYhkIjwKAik7wrNeeqFEbisqv35FpjGq3Q1oJpGkem4pxaLVEyZOHONefZ9MGVChT/MNH5b0FJYWl392RZy8KCdq376Vt4gKVlABvaV1DkapL+nLh7LMo/bENudARsxD55IGObMU19lkCQQDwHmzWPMHfc3kdY6AqiLrOss+MVIAhQqZOHhDe0aW2gZtwiWeYK1wB/fRxJ5esk1sScOWgzvCN/oGJLhU3kipHAkEAysNoSdG2oWADxlIt4W9kUiiiqNgimHGMHPwp4JMxupHMTm7D9XtGUIiDijZxunHv3kvktNfWj3Yji0661zHVJwJBAM8TDf077F4NsVc9AXVs8N0sq3xzqwQD/HPFzfq6hdR8tVY5yRMb4X7+SX4EDPORKKsgnYcur5lk8MUi7r072iUCQQC8xQvUne+fcdpRyrR4StJlQvucogwjTKMbYRBDygXkIlTJOIorgudFlrKP/HwJDoY4uQNl8gQJb/1LdrKwIe7FAkBl0TNtfodGrDXBHwBgtN/t3pyi+sz7OpJdUklKE7zMSBuLd1E3O4JMzvWP9wEE7JDb+brjgK4/cxxUHUTkk592
    -----END RSA PRIVATE KEY-----
  • PKCS8处理后的私钥文件示例(Java使用)

    1
    2
    3
    -----BEGIN PRIVATE KEY-----
    MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAN0yqPkLXlnhM+2H/57aHsYHaHXazr9pFQun907TMvmbR04wHChVsKVgGUF1hC0FN9hfeYT5v2SXg1WJSg2tSgk7F29SpsF0I36oSLCIszxdu7ClO7c22mxEVuCjmYpJdqb6XweAZzv4Is661jXP4PdrCTHRdVTU5zR9xUByiLSVAgMBAAECgYEAhznORRonHylm9oKaygEsqQGkYdBXbnsOS6busLi6xA+iovEUdbAVIrTCG9t854z2HAgaISoRUKyztJoOtJfI1wJaQU+XL+U3JIh4jmNx/k5UzJijfvfpT7Cv3ueMtqyAGBJrkLvXjiS7O5ylaCGuB0Qz711bWGkRrVoosPM3N6ECQQD8hVQUgnHEVHZYtvFqfcoq2g/onPbSqyjdrRu35a7PvgDAZx69Mr/XggGNTgT3jJn7+2XmiGkHM1fd1Ob/3uAdAkEA4D7aE3ZgXG/PQqlm3VbE/+4MvNl8xhjqOkByBOY2ZFfWKhlRziLEPSSAh16xEJ79WgY9iti+guLRAMravGrs2QJBAOmKWYeaWKNNxiIoF7/4VDgrcpkcSf3uRB44UjFSn8kLnWBUPo6WV+x1FQBdjqRviZ4NFGIP+KqrJnFHzNgJhVUCQFzCAukMDV4PLfeQJSmna8PFz2UKva8fvTutTryyEYu+PauaX5laDjyQbc4RIEMU0Q29CRX3BA8WDYg7YPGRdTkCQQCG+pjU2FB17ZLuKRlKEdtXNV6zQFTmFc1TKhlsDTtCkWs/xwkoCfZKstuV3Uc5J4BNJDkQOGm38pDRPcUDUh2/
    -----END PRIVATE KEY-----
  • 公钥文件示例

    1
    2
    3
    -----BEGIN PUBLIC KEY-----
    MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQWiDVZ7XYxa4CQsZoB3n7bfxLDkeGKjyQPt2FUtm4TWX9OYrd523iw6UUqnQ+Evfw88JgRnhyXadp+vnPKP7unormYQAfsM/CxzrfMoVdtwSiGtIJB4pfyRXjA+KL8nIa2hdQy5nLfgPVGZN4WidfUY/QpkddCVXnZ4bAUaQjXQIDAQAB
    -----END PUBLIC KEY-----

    证书文件的使用    .p12文件解析

    同一个.p12证书怎么android获取到私钥是16进制的,java获取到的私钥是10进制。
    android代码:
    KeyStore ks = KeyStore.getInstance("PKCS12");
    InputStream fis = ctx.getAssets().open("MobileClient.p12");
    char[] pwd = "123456".toCharArray();
    ks.load(fis, pwd);
    fis.close();
    Enumeration enume = ks.aliases();
    String keyAlias = null;
    if (enume.hasMoreElements()) {
     keyAlias = (String) enume.nextElement();
    }
    PrivateKey pk = (PrivateKey) ks.getKey(keyAlias, pwd);
    System.out.println(pk);

    java代码:
    KeyStore ks = KeyStore.getInstance("PKCS12");
    FileInputStream fis = new FileInputStream("h:/MobileClient.p12");
    char[] pwd = "123456".toCharArray();
    ks.load(fis, pwd);
    fis.close();
    Enumeration enume = ks.aliases();
    String keyAlias = null;
    if (enume.hasMoreElements()) {
     keyAlias = (String) enume.nextElement();
    }
    PrivateKey pk = (PrivateKey) ks.getKey(keyAlias, pwd);
    System.out.println(pk);

    andorid获取到的私钥:


    java获取到的私钥:

    原博客链接地址:https://doc.open.alipay.com/doc2/detail?treeId=58&articleId=103242&docType=1

本文为学习记录,相关摘抄至网络。

0 0
原创粉丝点击