01-26-2014, 04:18 PM
Hi friends,
Kindly help on the above topic.
I have a .cer file which I want to use to encrypt a password with. I have a java equivalent code but want to do it in vb.net
Kindly help on the above topic.
I have a .cer file which I want to use to encrypt a password with. I have a java equivalent code but want to do it in vb.net
Code:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.safaricom.security;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import javax.crypto.Cipher;
/**
*
* @author smutungi
*/
public class TheCipher {
public static final String ALGORITHM = "RSA";
public static final String PRIVATE_KEY_FILE = "D:/vas\\Mwamba\\B2C_Rollout\\ApiMessageEncryptionKey.key";
public static final String PUBLIC_KEY_FILE = "D:/Documents/Projects/G2/cert/saf.cer";
public static void generateKey() {
try {
final KeyPairGenerator keyGen = KeyPairGenerator.getInstance(ALGORITHM);
keyGen.initialize(1024);
final KeyPair key = keyGen.generateKeyPair();
File privateKeyFile = new File(PRIVATE_KEY_FILE);
File publicKeyFile = new File(PUBLIC_KEY_FILE);
// Create files to store public and private key
if (privateKeyFile.getParentFile() != null) {
privateKeyFile.getParentFile().mkdirs();
}
privateKeyFile.createNewFile();
if (publicKeyFile.getParentFile() != null) {
publicKeyFile.getParentFile().mkdirs();
}
publicKeyFile.createNewFile();
// Saving the Public key in a file
ObjectOutputStream publicKeyOS = new ObjectOutputStream(
new FileOutputStream(publicKeyFile));
publicKeyOS.writeObject(key.getPublic());
publicKeyOS.close();
// Saving the Private key in a file
ObjectOutputStream privateKeyOS = new ObjectOutputStream(
new FileOutputStream(privateKeyFile));
privateKeyOS.writeObject(key.getPrivate());
privateKeyOS.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static boolean areKeysPresent() {
File privateKey = new File(PRIVATE_KEY_FILE);
File publicKey = new File(PUBLIC_KEY_FILE);
if (privateKey.exists() && publicKey.exists()) {
return true;
}
return false;
}
public static byte[] encrypt(String text, PublicKey key) {
byte[] cipherText = null;
try {
// get an RSA cipher object and print the provider
final Cipher cipher = Cipher.getInstance(ALGORITHM);
// encrypt the plain text using the public key
cipher.init(Cipher.ENCRYPT_MODE, key);
cipherText = cipher.doFinal(text.getBytes());
} catch (Exception e) {
e.printStackTrace();
}
return cipherText;
}
public static String decrypt(byte[] text, PrivateKey key) {
byte[] dectyptedText = null;
try {
// get an RSA cipher object and print the provider
final Cipher cipher = Cipher.getInstance(ALGORITHM);
// decrypt the text using the private key
cipher.init(Cipher.DECRYPT_MODE, key);
dectyptedText = cipher.doFinal(text);
} catch (Exception ex) {
ex.printStackTrace();
}
return new String(dectyptedText);
}
public static void main(String[] args) {
String message = "";
byte[] messageBytes;
byte [] tempPub = null;
String sPub = null;
byte[] ciphertextBytes = null;
byte[] textBytes = null;
try {
// Check if the pair of keys are present else generate those.
if (!areKeysPresent()) {
// Method generates a pair of keys using the RSA algorithm and stores it
// in their respective files
generateKey();
}
final String originalText = "SOFTUNI_INIT";
ObjectInputStream inputStream = null;
final PublicKey publicKey = null;
InputStream inStream = new FileInputStream("D:\\vas\\Mwamba\\Safaricom Broker\\20130924\\saf.cer");
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert =(X509Certificate)cf.generateCertificate(inStream);
inStream.close();
// Read the public key from certificate file
PublicKey pubkey = (PublicKey) cert.getPublicKey();
final byte[] cipherText = encrypt(originalText, pubkey);
tempPub = pubkey.getEncoded();
sPub = new String( tempPub );
System.out.println("CipherText = " + new String(Base64.encode(cipherText))+ "\n" );
System.out.println("Issued by = " + cert.getIssuerDN() + "\n" );
System.out.println("Public key from certificate file:\n" + sPub.toString() + "\n");
System.out.println("Public Key Algorithm = " + cert.getPublicKey().getAlgorithm() + "\n" );
// InputStream inStream_ = new FileInputStream("D:\\vas\\privateBrokerKey.key");
// CertificateFactory cf_ = CertificateFactory.getInstance("X.509");
// X509Certificate cert_ =(X509Certificate)cf_.generateCertificate(inStream_);
// inStream.close();
//
// PrivateKey privateKey;
// privateKey = (PrivateKey) inStream_.readObject();
// final String plainText = decrypt(cipherText, privateKey);
// System.out.println("Plaintext = " + plainText + "\n" );
// inputStream = new ObjectInputStream(new FileInputStream(PUBLIC_KEY_FILE));
// publicKey. = (PublicKey) inputStream.readObject();
// final byte[] cipherText = encrypt(originalText, publicKey);
// inputStream = new ObjectInputStream(new FileInputStream(PUBLIC_KEY_FILE));
// CertificateFactory f = CertificateFactory.getInstance("X.509");
//X509Certificate certificate = (X509Certificate)f.generateCertificate(inputStream);
//PublicKey pk = certificate.getPublicKey();
//final PublicKey publicKey = (PublicKey) inputStream.readObject();
//final byte[] cipherText = encrypt(originalText, pk);
// Encrypt the string using the public key
// FileInputStream fin = new FileInputStream(PUBLIC_KEY_FILE);
// Decrypt the cipher text using the private key.
//inputStream = new ObjectInputStream(new FileInputStream(PRIVATE_KEY_FILE));
// final PrivateKey privateKey = (PrivateKey) inputStream.readObject();
//final String plainText = decrypt(cipherText, privateKey);
// Printing the Original, Encrypted and Decrypted Text
// System.out.println("Original Text: " + originalText);
// System.out.println("Encrypted Text: " + new String(cipherText));
//System.out.println("Decrypted Text: " + plainText);
} catch (Exception e) {
e.printStackTrace();
}
}
private static String hex(String sPub) {
sPub.toString();
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}