Java実装のRSA暗号解読アルゴリズムの例
5199 ワード
この例では、Javaによって実装されるRSA暗号解読アルゴリズムについて説明する.皆さんの参考にしてください.具体的には以下の通りです.
PS:暗号解読に興味のある方は、当駅のオンラインツールも参考にしてください.
文字オンライン暗号解読ツール(AES、DES、RC 4などを含む):http://tools.jb51.net/password/txt_encode
MD 5オンライン暗号化ツール:http://tools.jb51.net/password/CreateMD5Password
オンラインハッシュ/ハッシュアルゴリズム暗号化ツール:http://tools.jb51.net/password/hash_encrypt
オンラインMD 5/hash/SAH-1/SAH-2/SAH-256/SAH-512/SAH-3/RIPEMD-160暗号化ツール:http://tools.jb51.net/password/hash_md5_sha
オンラインsha 1/sha 224/sha 256/sha 384/sha 512暗号化ツール:http://tools.jb51.net/password/sha_encode
Javaに関する詳細について興味のある読者は、「Java数学演算テクニックまとめ」、「Javaデータ構造とアルゴリズムチュートリアル」、「Java文字と文字列操作テクニックまとめ」、「Java操作DOMノードテクニックまとめ」、「Javaキャッシュ操作テクニックまとめ」のトピックを参照してください.
本文で述べたjavaプログラム設計に役立つことを願っています.
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.security.Key;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.SecureRandom;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import javax.crypto.Cipher;
public class RSAUtils{
public static String makekeyfile(String pubkeyfile, String prikeyfile) {
String result = " ";
try{
// KeyPairGenerator , RSA
KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA");
// , 1024
gen.initialize(1024);
// //
// SecureRandom random = new SecureRandom();
// gen.initialize(1024,random);
// , pair
KeyPair pair = gen.generateKeyPair();
//
RSAPrivateKey priKey = (RSAPrivateKey) pair.getPrivate();
//
RSAPublicKey pubKey = (RSAPublicKey) pair.getPublic();
//
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(prikeyfile));
os.writeObject(priKey);
os.flush();
os.close();
//
os = new ObjectOutputStream(new FileOutputStream(pubkeyfile));
os.writeObject(pubKey);
os.flush();
os.close();
result = " 【"+pubkeyfile+"】 【"+prikeyfile+"】";
}catch(Exception e){
e.printStackTrace();
}
return result;
}
public static void main(String[] args) {
try{
String pubfile = "F:/images/pub.key";
String prifile = "F:/images/pri.key";
String result = null;
//result = makekeyfile(pubfile, prifile);
result = markPuPra(pubfile, prifile);
System.out.println(result);
}catch(Exception e){
e.printStackTrace();
}
}
public static String markPuPra(String pubfile,String prifile){
String results = " ";
try{
ObjectInputStream os = new ObjectInputStream(new FileInputStream(pubfile));
RSAPublicKey pubkey = (RSAPublicKey) os.readObject();
os.close();
os = new ObjectInputStream(new FileInputStream(prifile));
RSAPrivateKey prikey = (RSAPrivateKey) os.readObject();
os.close();
String utf = "UTF-8";
String msg = "## %% ) @+_";
//
System.out.println(" : " + msg);
byte[] puk = handleData(pubkey, msg.getBytes(utf), 1);
System.out.println(" : " + new String(puk, utf));
byte[] dpuk = handleData(prikey, puk, 0);
System.out.println(" : " + new String(dpuk, utf));
msg = "jd# 0 ¥ +=# ";
//
System.out.println(" : " + msg);
byte[] prk = handleData(prikey, msg.getBytes(utf), 1);
System.out.println(" : " + new String(prk, utf));
byte[] dprk = handleData(pubkey, prk, 0);
System.out.println(" : " + new String(dprk, utf));
results = " ";
}catch(Exception e){
e.printStackTrace();
}
return results;
}
/**
*
* @param k
* @param data
* @param encrypt 1 0
* @return
* @throws Exception
*/
public static byte[] handleData(Key key, byte[] data, int type) throws Exception {
if (key != null) {
Cipher ci = Cipher.getInstance("RSA");
if (type == 1) {
ci.init(Cipher.ENCRYPT_MODE, key);
byte[] res = ci.doFinal(data);
return res;
}
if (type == 0) {
ci.init(Cipher.DECRYPT_MODE, key);
byte[] res = ci.doFinal(data);
return res;
}
}
return null;
}
}
PS:暗号解読に興味のある方は、当駅のオンラインツールも参考にしてください.
文字オンライン暗号解読ツール(AES、DES、RC 4などを含む):http://tools.jb51.net/password/txt_encode
MD 5オンライン暗号化ツール:http://tools.jb51.net/password/CreateMD5Password
オンラインハッシュ/ハッシュアルゴリズム暗号化ツール:http://tools.jb51.net/password/hash_encrypt
オンラインMD 5/hash/SAH-1/SAH-2/SAH-256/SAH-512/SAH-3/RIPEMD-160暗号化ツール:http://tools.jb51.net/password/hash_md5_sha
オンラインsha 1/sha 224/sha 256/sha 384/sha 512暗号化ツール:http://tools.jb51.net/password/sha_encode
Javaに関する詳細について興味のある読者は、「Java数学演算テクニックまとめ」、「Javaデータ構造とアルゴリズムチュートリアル」、「Java文字と文字列操作テクニックまとめ」、「Java操作DOMノードテクニックまとめ」、「Javaキャッシュ操作テクニックまとめ」のトピックを参照してください.
本文で述べたjavaプログラム設計に役立つことを願っています.