先看看小程序的开放数据校验与解密

开放数据校验与解密


公钥,私钥,对称非对称,DES加密算法,AES加密算法,RSA加密算法,Base64加密算法,MD5加密算法等的定义

openssl的使用

mac 本省自带openssl可通过如下命令查看

1
2
➜  .ssh openssl version
LibreSSL 2.2.7
  1. 命令行cd到公私密钥需要生成的目录
  2. 生成公钥: openssl genrsa -out rsa_private_key.pem 1024
  3. 生成私钥: openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

拓展指令

  1. 使用终端进入到制定目录下

  2. 运行命令:openssl

  3. 生成一个1024位的私钥:genrsa -out rsa_private_key.pem 1024

  4. 利用私钥生成JAVA支持的PKCS8类型的私钥:pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out pkcs8_private_key.pem

  5. 生成JAVA支持的PKCS8二进制类型的私钥:pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform DER -nocrypt -out pkcs8_private_key.der(java端使用的私钥就是这个:pkcs8_private_key.der)

  6. 生成公钥:rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

  7. 创建证书请求:req -new -out cert.csr -key rsa_private_key.pem(其间会要求填写国家地区公司信息等,随便填写OR认真填写都不影响证书使用)

  8. 创建X509的自签署跟证书(iOS支持X509,有效期3650天):x509 -req -in cert.csr -out rsa_public_key.der -outform der -signkey rsa_private_key.pem -days 3650(iOS端使用的私钥就是这个:rsa_public_key.der)

下面创建iOS端的密钥(p12)

  1. x509 -req -days 3650 -in cert.csr -signkey rsa_private_key.pem -out rsacert.crt

  2. pkcs12 -export -out p.p12 -inkey rsa_private_key.pem -in rsacert.crt


node.js公钥,私钥加解密一例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const fs = require('fs');
const crypto = require('crypto');

const publicKey = fs.readFileSync('./pem/rsa_public_key.pem').toString('ascii');
const privateKey = fs.readFileSync('./pem/rsa_private_key.pem').toString('ascii');
console.log(publicKey, privateKey);

const data = 'hi ryan suen';
//const enData = crypto.publicEncrypt(publicKey, new Buffer(data)).toString('base64');
const enData = crypto.publicEncrypt(publicKey, new Buffer(data));
console.log( enData );

//const deData = crypto.privateDecrypt( privateKey, new Buffer(enData, 'base64') );
const deData = crypto.privateDecrypt( privateKey, enData );
console.log(deData.toString());