Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

package rr.util.crypto; import java.security.*; import java.security.spec.*; import java.io.*; import org.apache.commons.ssl.

*; public class EncryptManager { private PrivateKey privateKey = null; private PublicKey publicKey= null; public void readPrivateKey(String URI) throws Exception { FileInputStream keyfis = new FileInputStream(URI); byte[] encKey = new byte[keyfis.available()]; keyfis.read(encKey); keyfis.close(); PKCS8EncodedKeySpec privKeySpec = new PKCS8EncodedKeySpec(encKey ); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); privateKey = keyFactory.generatePrivate(privKeySpec); } public void readPublicKey(String URI) throws Exception { FileInputStream keyfis = new FileInputStream(URI); byte[] encKey = new byte[keyfis.available()]; keyfis.read(encKey); keyfis.close(); X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(encKey); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); publicKey = keyFactory.generatePublic(pubKeySpec); } public void readKeys(String publicURI, String privateURI)throws Exceptio n { readPublicKey(publicURI); readPrivateKey(privateURI); } public String sign(String buffer) throws Exception { Signature rsa = Signature.getInstance("SHA1withRSA"); rsa.initSign(privateKey); rsa.update(buffer.getBytes()); String signature = new String(rsa.sign()); return signature; } public boolean verify(String signature, String buffer) throws Exception { Signature rsa = Signature.getInstance("SHA1withRSA"); rsa.initVerify(publicKey); rsa.update(buffer.getBytes()); return rsa.verify(signature.getBytes()); } public void writePrivateKey(String URI) throws Exception { byte[] enckey = privateKey.getEncoded(); FileOutputStream keyfos = new FileOutputStream(URI); keyfos.write(enckey);

keyfos.close(); } public String readPrivateKey2(byte[] bytes) throws Exception { //return bytes.toString(); //FileInputStream keyfis = new FileInputStream(URI); //byte[] encKey = new byte[keyfis.available()]; //keyfis.read(encKey); //byte[] encKey= new byte[2048]; //keyfis.read(encKey,0,2048); //keyfis.close(); //return encKey.toString(); //PKCS8EncodedKeySpec privKeySpec = new PKCS8EncodedKeySpec(encK ey); //KeyFactory keyFactory = KeyFactory.getInstance("RSA"); //privateKey = keyFactory.generatePrivate(privKeySpec); PKCS8EncodedKeySpec privKeySpec = new PKCS8EncodedKeySpec(bytes) ; KeyFactory keyFactory = KeyFactory.getInstance("RSA"); privateKey = keyFactory.generatePrivate(privKeySpec); return "nanchis"; //return privateKey.toString(); } public String readPKCS8PrivateKey(byte[] bytes, String passwd)throws E xception { /* byte[] decrypted = (passwd != null) ? getBytes(in, passwd.toCharArray()) : getBytes(in); */ PKCS8Key key= new PKCS8Key(bytes, passwd.toCharArray()); PKCS8EncodedKeySpec keysp = new PKCS8EncodedKeySpec(key.getDecrypted Bytes()); KeyFactory kf = KeyFactory.getInstance("RSA"); privateKey= kf.generatePrivate(keysp); return privateKey.toString(); } public PrivateKey getPrivateKey(){ return this.privateKey; } /* public static PrivateKey loadPKCS8PrivateKey(InputStream in, String pa sswd) throws Exception { byte[] decrypted = (passwd != null) ? getBytes(in, passwd.toCharArray()) : getBytes(in); PKCS8EncodedKeySpec keysp = new PKCS8EncodedKeySpec(decrypted); KeyFactory kf = KeyFactory.getInstance("RSA"); return kf.generatePrivate(keysp); } */ /* private static byte[] getBytes(InputStream in) throws Exception {

try { return ByteStreams.toByteArray(in); } finally { in.close(); } } */ /* private static byte[] getBytes(InputStream in, char[] passwd) throws Exception { try { sun.security.pkcs.PKCS8Key pkcs8 = new sun.security.pkcs.PKCS8Key( in, passwd); return pkcs8.getDecryptedBytes(); } finally { in.close(); } } */ }

You might also like