Java Assignment Related
Message digest MessageDigest class getInstance(“SHA”) to feed in update(byte []) update(byte) digest(); digest(byte []) Returned as byte array
Digesting stream Example Producing byte array DigestInputStream in = new DigestInputStream( new FileInputStream(args[0]), md); Producing byte array DataOutputStream to ByteOutputStream ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); DataOutputStream dataOut = new DataOutputStream(byteOut); You can do dataOut.writeLong(l) byteOut.toByteArray()
Key, KeyGenerator Key: top-level interface for all keys. defines the functionality of all key objects. KeyGenerator: This class provides the functionality of a (symmetric) key generator. static KeyGenerator getInstance(String algorithm) Generates a KeyGenerator object for the specified algorithm. void init(SecureRandom random) Initializes this key generator. SecretKey generateKey() Generates a secret key. KeyGenerator kg = KeyGenerator.getInstance("DES"); kg.init(new SecureRandom()); SecretKey key = kg.generateKey();
KeyPairGenerator Examples: KeyPairGenerator kpg = KeyPairGenerator.getInstance("ElGamal") KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA"); kpg.initialize(1024); KeyPair pair = kpg.genKeyPair(); public PublicKey getPublic() - This method returns the public key. public PrivateKey getPrivate() - This method returns the private key.
Cipher, For encryptio/decryption Assymtric and symmentric key systems static Cipher getInstance(String transformation) Generates a Cipher object that implements the specified transformation. You can use “DES/ECB/PKCS5Padding” void init(int opmode, Key key) Initializes this cipher with a key. public static final int ENCRYPT_MODE public static final int DECRYPT_MODE public final byte[] update (byte []) public final byte[] doFinal()
CipherOutputstream CipherInputstream CipherOutputStream(OutputStream os, Cipher c) Constructs a CipherOutputStream from an OutputStream and a Cipher. void write(byte[] b) Writes b.length bytes from the specified byte array to this output stream. CipherInputStream(InputStream is, Cipher c) Constructs a CipherInputStream from an InputStream and a Cipher. int read(byte[] b) Reads up to b.length bytes of data from this input stream into an array of bytes. void close() Closes this output/input stream and releases any system resources associated with this stream.
Big Integer BeigInteger(1, messagebytes) x/y mod z BigInteger.valueOf(1) x/y mod z x.multiply(y.modPow(kOne.negate(), z)).mod(z) k relatively prime to z k.gcd(z).equals(kOne) == true
Java Security API packages Java.security.cert Java.security.interfaces Java.security.spec Javax.crypto Javax.crypto.interfaces Javax.crypto.spec Some Abbreviations JCA – java cryptographic architecture JCE – java cryptographic extensions Access Control
Class or Interface Description java.security.cert.Certificate A cryptographic certificate javax.crypto.Cipher A cipher java.security.Key , java.security.PrivateKey , java.security.PublicKey , javax.crypto.SecretKey A key, used for signing or encryption javax.crypto.KeyAgreement A secret key exchange protocol java.security.KeyFactory Translates public and private keys from one format to another javax.crypto.KeyGenerator Creates keys for symmetric ciphers java.security.KeyPairGenerator Creates pairs of public and private keys for signing or encryption javax.crypto.Mac A Message Authentication Code (MAC) java.security.MessageDigest A cryptographic hash function javax.crypto.SecretKeyFactory Translates secret keys from one format to another java.security.SecureRandom A cryptographically strong random number engine java.security.Signature A digital signature
Factory Methods JCA extensively use factory methods MessageDigest md5; md5 = MessageDigest.getInstance("MD5"); Overloaded version accepts Algorithm & Provider KeyPairGenerator kpg = KeyPairGenerator("ElGamal", "Jonathan"); Cipher, keyGenerator, KeyPairGenerator, MessageDigest, Signature