Snippets

Masafumi Yabu generate-rsakey.rb

Created by Former user

File generate-rsakey.rb Added

  • Ignore whitespace
  • Hide word diff
+#!/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-----"
HTTPS SSH

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