Skip to content

Instantly share code, notes, and snippets.

@mimosa
Created March 24, 2016 06:41
Show Gist options
  • Save mimosa/e5b033fc9f915a78de11 to your computer and use it in GitHub Desktop.
Save mimosa/e5b033fc9f915a78de11 to your computer and use it in GitHub Desktop.
# -*- 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