Snippets

Masafumi Yabu generate-rsakey.rb

Created by Masafumi Yabu
#!/usr/bin/env ruby
# p, q, eを標準入力から入力し、RSAのprivate_keyを作成する
require 'openssl'
require 'base64'
include OpenSSL
prime1 = BN.new(gets.chomp)
prime2 = BN.new(gets.chomp)
pubExp = BN.new(gets.chomp)
mod = BN.new((prime1.to_i * prime2.to_i).to_s)
privExp = pubExp.mod_inverse(BN.new(
  ((prime1.to_i - 1) * 
  (prime2.to_i - 1)).to_s
))
exp1 = privExp.to_i % (prime1.to_i-1)
exp2 = privExp.to_i % (prime2.to_i-1)
co = prime2.mod_inverse(prime1)

private_key = ASN1::Sequence.new [
 ASN1::Integer.new(0),
 ASN1::Integer.new(mod.to_i),
 ASN1::Integer.new(pubExp.to_i),
 ASN1::Integer.new(privExp.to_i),
 ASN1::Integer.new(prime1.to_i),
 ASN1::Integer.new(prime2.to_i),
 ASN1::Integer.new(exp1.to_i),
 ASN1::Integer.new(exp2.to_i),
 ASN1::Integer.new(co.to_i)
]
puts "-----BEGIN RSA PRIVATE KEY-----"
print Base64.encode64(private_key.to_der)
puts "-----END RSA PRIVATE KEY-----"

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.