Created
March 24, 2016 06:41
-
-
Save mimosa/e5b033fc9f915a78de11 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- encoding: utf-8 -*- | |
require 'openssl' | |
require 'base64' | |
# 生成一对秘钥 | |
# rsa = OpenSSL::PKey::RSA.generate( 2048 ) | |
# public_rsa = rsa.public_key.to_pem | |
# private_rsa = rsa.to_pem | |
# 公钥 | |
public_rsa = <<EOF | |
-----BEGIN PUBLIC KEY----- | |
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAytBHq+UByr9MNkgNgjlF | |
59+C686VAg7ENtVzMrXPxfES/f2qN4Qyl2OiDazgHqKAYCx2TqI8n9BOwBNG6qUB | |
Api5rrVVHY0JtU4fIo9cDVd3OzY22mSI7z5exUhXSs0ekHhnjzScX5UlM8k72oTe | |
pVW75RsrJY7u/Dob06xsim5CanTWjMTvNycaUc8rEq5r+Fpzcb/iphUS45Xymnqx | |
gDvxCuikLRH4i+E22rrLKqIKaK8BTuS/Vvlmw5oHdPvL8AXCVj+51xzrxFg5VVFp | |
Oxa7RamWy2U3tLDhbjfid9tC7aRNelTHV5Fn/ZQ32PG7vU43eZTCd+fwlhqVpt1v | |
dwIDAQAB | |
-----END PUBLIC KEY----- | |
EOF | |
# 私钥 | |
private_rsa = <<EOF | |
-----BEGIN RSA PRIVATE KEY----- | |
MIIEpAIBAAKCAQEAytBHq+UByr9MNkgNgjlF59+C686VAg7ENtVzMrXPxfES/f2q | |
N4Qyl2OiDazgHqKAYCx2TqI8n9BOwBNG6qUBApi5rrVVHY0JtU4fIo9cDVd3OzY2 | |
2mSI7z5exUhXSs0ekHhnjzScX5UlM8k72oTepVW75RsrJY7u/Dob06xsim5CanTW | |
jMTvNycaUc8rEq5r+Fpzcb/iphUS45XymnqxgDvxCuikLRH4i+E22rrLKqIKaK8B | |
TuS/Vvlmw5oHdPvL8AXCVj+51xzrxFg5VVFpOxa7RamWy2U3tLDhbjfid9tC7aRN | |
elTHV5Fn/ZQ32PG7vU43eZTCd+fwlhqVpt1vdwIDAQABAoIBAGo3qMGi30xi4bQw | |
CjsgabclfPioqat5NlQNeBaf16AwQKUa+9G1f5V/zbhhyMLikl9MCe3m099TBltb | |
/TEYl63XdK/GMjyWx/XXY0EDWc929m/hVdsM+hZqUNH7sBPx10cMeBgtEpSQlPpJ | |
MvqfycdHXm9/yhoSgKFCgZ5bWEEqzL13DRXgueN6uq8L86VEDdeKtxit5JlfQP4t | |
JBdatRUYw4YBZT2d+dilZUvhDD/bAkMM2B1cBhppKbYwt7jL+oltBukAK1v16niZ | |
jtEU/iw8dKg1aeu1PAexpHnIeTHqHzZ1BeCUsADmJ/03qZmM0lGyrqqcihbPZCII | |
AFBxcgECgYEA8NtZfvm1tAXbsn0naE52mZ+xuqzThUdq5sfHMejA4Jy2aab6M0JH | |
zfHHLEDwG5QS+2zueMfxi/cDYCpGJ/Byj5p/i8XAU3R45FRcwhbASKZ2UwRYfOv1 | |
jUL5o6utNRGewqWyxj0XZDA7fue3m7mNAw310V9tdr9S61EyZbN52QECgYEA15Cd | |
cAREUMTEmTNWQYm1OqCddF8P1861UAptnjHZtJt87pax59YVSRhpGj8q8AX3IHsR | |
nxpJB8EEaZQrqimvhoGjLf6ONb9CT7ErexpoxGI3jFeWZ632Ylmvz67yznAYHB+L | |
0ifpXMHeQtx6bUJJ9CIaRhhmMi4po+MaGO4pkHcCgYEA14RO9pFWh3ledr4KTwk2 | |
kowUqmcO9glLnKlSklQkkldn2e3xn4BFZABeKjkJIIRE3/k/AZBXkNg8iwYItKAw | |
wlKKonUWfRaRPi5Gud1FvTxGUE5pJ46zr+0oF838NKpJlv5Rk5UCo0GNWybYYl2L | |
0hnhxbFP75uPBMUpBVutQgECgYEAkvz5XbiLHMgPhqeK2YWdHi0HMKLhmrZIzBtQ | |
Q96aJJ0hw07eYMeKHB2ZDVylWqW2rV891M+HnNHwwE1YuN9T4NPlASfisKOKA+07 | |
SOXpKoAOgJP46xmkN8wQJf2Vc07cIdEg9lxgs+8+LzlIAdiBtQbMA5//j5gKrMXe | |
tcEwdmECgYBMxAViT+4J7EJBEbuKxFdQwpgxMPbDdWcAlSC2GYo+FfXZgVZ+JQcH | |
c0LLcK4i+MJhS17mVyXjEl9O8mO6u/sdKSJvrpbxCjGFSlgsz1VRcmeZ63X9C/jU | |
cJ0zLFstLbOBGLsFy2Fg7ZRXzvs/mc+si+Kg4M99gQtbMIZc7QAIHg== | |
-----END RSA PRIVATE KEY----- | |
EOF | |
# 加密数据 | |
public_key = OpenSSL::PKey::RSA.new(public_rsa) | |
# 原始内容 | |
body = 'welcome' | |
# Base64 编码,方便传输。 | |
encrypted_body = Base64.urlsafe_encode64 public_key.public_encrypt(body) | |
# 解密数据 | |
private_key = OpenSSL::PKey::RSA.new(private_rsa) | |
# 先 Base64 解码,再解密。 | |
body = private_key.private_decrypt Base64.urlsafe_decode64(encrypted_body) | |
puts body |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment