Java Cryptography - Tutorialspoint

2y ago
180 Views
9 Downloads
1,023.37 KB
48 Pages
Last View : 2d ago
Last Download : 3m ago
Upload by : Braxton Mach
Transcription

Java Cryptographyi

Java CryptographyAbout the TutorialThe Java Cryptography Architecture (JCA) is a set of APIs to implement concepts of moderncryptography such as digital signatures, message digests, and certificates. Thisspecification helps developers integrate security in their applications.AudienceThis tutorial has been prepared for beginners to make them understand the basics of JCA.All the examples are given using the Java programming language therefore, a basic ideaon Java programming language is required.PrerequisitesFor this tutorial, it is assumed that the readers have a prior knowledge of Javaprogramming language.Copyright & Disclaimer Copyright 2018 by Tutorials Point (I) Pvt. Ltd.All the content and graphics published in this e-book are the property of Tutorials Point (I)Pvt. Ltd. The user of this e-book is prohibited to reuse, retain, copy, distribute or republishany contents or a part of contents of this e-book in any manner without written consentof the publisher.We strive to update the contents of our website and tutorials as timely and as precisely aspossible, however, the contents may contain inaccuracies or errors. Tutorials Point (I) Pvt.Ltd. provides no guarantee regarding the accuracy, timeliness or completeness of ourwebsite or its contents including this tutorial. If you discover any errors on our website orin this tutorial, please notify us at contact@tutorialspoint.comi

Java CryptographyTable of ContentsAbout the Tutorial . iAudience . iPrerequisites . iCopyright & Disclaimer . iTable of Contents . ii1.Java Cryptography – Introduction . 1What is Cryptanalysis?. 1Cryptography Primitives . 1Cryptography in Java . 1MESSAGE DIGEST AND MAC . 22.Java Cryptography — Message Digest . 33.Java Cryptography — Creating a MAC . 6KEYS AND KEY STORE . 104.Java Cryptography — Keys . 11Symmetric Key Encryption. 11Asymmetric Key Encryption. 115.Java Cryptography — Storing Keys . 12Storing a Key in keystore . 126.Java Cryptography — Retrieving Keys . 15GENERATING KEYS . 197.Java Cryptography — KeyGenerator . 208.Java Cryptography — KeyPairGenerator . 22DIGITAL SIGNATURE . 249.Java Cryptography — Creating Signature . 25Advantages of digital signature . 25ii

Java CryptographyCreating the digital signature . 2510. Java Cryptography — Verifying Signature . 30CIPHER TEXT . 3511. Java Cryptography — Encrypting data . 3612. Java Cryptography — Decrypting Data . 40iii

1. Java Cryptography – IntroductionJava CryptographyCryptography is the art and science of making a cryptosystem that is capable of providinginformation security.Cryptography deals with the securing of digital data. It refers to the design of mechanismsbased on mathematical algorithms that provide fundamental information security services.You can think of cryptography as the establishment of a large toolkit containing differenttechniques in security applications.What is Cryptanalysis?The art and science of breaking the cipher text is known as cryptanalysis.Cryptanalysis is the sister branch of cryptography and they both co-exist. Thecryptographic process results in the cipher text for transmission or storage. It involves thestudy of cryptographic mechanism with the intention to break them. Cryptanalysis is alsoused during the design of the new cryptographic techniques to test their security strengths.Cryptography PrimitivesCryptography primitives are nothing but the tools and techniques in Cryptography thatcan be selectively used to provide a set of desired security services: Encryption Hash functions Message Authentication codes (MAC) Digital SignaturesCryptography in JavaThe Java Cryptography Architecture (JCA) is a set of APIs to implement concepts of moderncryptography such as digital signatures, message digests, certificates, encryption, keygeneration and management, and secure random number generation, etc.Using JCA, developers can build their applications integrating security in them.To integrate security in your applications rather than depending on the complicatedsecurity algorithms, you can easily call the respective APIs provided in JCA for requiredservices.1

Java CryptographyMessage Digest and MAC2

Java Cryptography2. Java Cryptography — Message DigestHash functions are extremely useful and appear in almost all information securityapplications.A hash function is a mathematical function that converts a numerical input value intoanother compressed numerical value. The input to the hash function is of arbitrary lengthbut output is always of fixed length.Values returned by a hash function are called message digest or simply hash values.The following picture illustrated hash function.Java provides a class named MessageDigest, which belongs to the packagejava.security. This class supports algorithms such as SHA-1, SHA 256, MD5 algorithmsto convert an arbitrary length message to a message digest.To convert a given message to a message digest, follow the steps given below:Step 1: Create a MessageDigest objectThe MessageDigest class provides a method named getInstance(). This method acceptsa String variable specifying the name of the algorithm to be used and returns aMessageDigest object implementing the specified algorithm.Create MessageDigest object using the getInstance() method as shown below.MessageDigest md MessageDigest.getInstance("SHA-256");Step 2: Pass data to the created MessageDigest objectAfter creating the message digest object, you need to pass the message/data to it. Youcan do so using the update() method of the MessageDigest class. This method acceptsa byte array representing the message and adds/passes it to the above-createdMessageDigest object.3

Java Cryptographymd.update(msg.getBytes());Step 3: Generate the message digestYou can generate the message digest using the digest() method of the MessageDigestclass. This method computes the hash function on the current object and returns themessage digest in the form of byte array.Generate the message digest using the digest method.byte[] digest md.digest();ExampleFollowing is an example, which reads data from a file, generates a message digest, andprints it.import java.security.MessageDigest;import java.util.Scanner;public class MessageDigestExample {public static void main(String args[]) throws Exception{//Reading data from userScanner sc new Scanner(System.in);System.out.println("Enter the message");String message sc.nextLine();//Creating the MessageDigest objectMessageDigest md MessageDigest.getInstance("SHA-256");//Passing data to the created MessageDigest Objectmd.update(message.getBytes());//Compute the message digestbyte[] digest g the byte array in to HexString formatStringBuffer hexString new StringBuffer();4

Java Cryptographyfor (int i 0;i digest.length;i ) {hexString.append(Integer.toHexString(0xFF & digest[i]));}System.out.println("Hex format : " hexString.toString());}}OutputThe above program generates the following output:Enter the messageHello how are you[B@55f96302Hex format: a3295cbd64d35

3. Java Cryptography — Creating a MACJava CryptographyMAC (Message Authentication Code) algorithm is a symmetric key cryptographic techniqueto provide message authentication. For establishing MAC process, the sender and receivershare a symmetric key K.Essentially, a MAC is an encrypted checksum generated on the underlying message thatis sent along with a message to ensure message authentication.The process of using MAC for authentication is depicted in the following illustration In Java, the Mac class of the javax.crypto package provides the functionality of messageauthentication code. Follow the steps given below to create message authentication codeusing this class.Step 1: Create a KeyGenerator objectThe KeyGenerator class provides getInstance() method which accepts a String variablerepresenting the required key-generating algorithm and returns a KeyGenerator objectthat generates secret keysCreate KeyGenerator object using the getInstance() method as shown below.//Creating a KeyGenerator objectKeyGenerator keyGen KeyGenerator.getInstance("DES");Step 2: Create SecureRandom objectThe SecureRandom class of the java.Security package provides a strong randomnumber generator, which is used to generate random numbers in Java. Instantiate thisclass as shown below.//Creating a SecureRandom objectSecureRandom secRandom new SecureRandom();6

Java CryptographyStep 3: Initialize the KeyGeneratorThe KeyGenerator class provides a method named init(). This method accepts theSecureRandom object and initializes the current KeyGenerator.Initialize the KeyGenerator object created in the previous step using this method.//Initializing the KeyGeneratorkeyGen.init(secRandom);Step 4: Generate keyGenerate key using the generateKey() method of the KeyGenerator class as shownbelow.//Creating/Generating a keyKey key keyGen.generateKey();Step 5: Initialize the Mac objectThe init() method of the Mac class accepts a Key object and initializes the current Macobject using the given key.//Initializing the Mac objectmac.init(key);Step 6: Finish the mac operationThe doFinal() method of the Mac class is used to finish the Mac operation. Pass therequired data in the form of byte array to this method and finish the operation as shownbelow.//Computing the MacString msg new String("Hi how are you");byte[] bytes msg.getBytes();byte[] macResult mac.doFinal(bytes);ExampleThe following example demonstrates the generation of Message Authentication Code(MAC) using JCA. Here, we take a simple message "Hi how are you" and, generate a Macfor that message.import java.security.Key;import java.security.SecureRandom;import javax.crypto.KeyGenerator;7

Java Cryptographyimport javax.crypto.Mac;public class MacSample {public static void main(String args[]) throws Exception{//Creating a KeyGenerator objectKeyGenerator keyGen KeyGenerator.getInstance("DES");//Creating a SecureRandom objectSecureRandom secRandom new SecureRandom();//Initializing the rating a keyKey key keyGen.generateKey();//Creating a Mac objectMac mac Mac.getInstance("HmacSHA256");//Initializing the Mac objectmac.init(key);//Computing the MacString msg new String("Hi how are you");byte[] bytes msg.getBytes();byte[] macResult mac.doFinal(bytes);System.out.println("Mac result:");System.out.println(new String(macResult));}}OutputThe above program will generate the following output:Mac result:8

Java CryptographyHÖ„ ǃΠUtbh ?š üzØSSÜh ž œa0ŽV?9

Java CryptographyKeys and Key Store10

4. Java Cryptography — KeysJava CryptographyCryptosystem is an implementation of cryptographic techniques and their accompanyinginfrastructure to provide information security services. A cryptosystem is also referred toas a cipher system.The various components of a basic cryptosystem are Plaintext, Encryption Algorithm,Ciphertext, Decryption Algorithm, Encryption Key and, Decryption Key.Where, Encryption Key is a value that is known to the sender. The sender inputs theencryption key into the encryption algorithm along with the plaintext in order tocompute the cipher text. Decryption Key is a value that is known to the receiver. The decryption key isrelated to the encryption key, but is not always identical to it. The receiver inputsthe decryption key into the decryption algorithm along with the cipher text in orderto compute the plaintext.Fundamentally there are two types of keys/cryptosystems based on the type of encryptiondecryption algorithms.Symmetric Key EncryptionThe encryption process where same keys are used for encrypting and decrypting theinformation is known as Symmetric Key Encryption.The study of symmetric cryptosystems is referred to as symmetric cryptography.Symmetric cryptosystems are also sometimes referred to as secret key cryptosystems.Following are a few common examples of symmetric key encryption: Digital Encryption Standard (DES) Triple-DES (3DES) IDEA BLOWFISHAsymmetric Key EncryptionThe encryption process where different keys are used for encrypting and decryptingthe information is known as Asymmetric Key Encryption. Though the keys are different,they are mathematically related and hence, retrieving the plaintext by decrypting ciphertext is feasible.11

5. Java Cryptography — Storing KeysJava CryptographyThe Keys and certificates used/generated are stored in a database called the keystore. Bydefault, this database is stored in a file named .keystore.You can access the contents of this database using the KeyStore class of thejava.security package. This manages the following three different entries: PrivateKeyEntry SecretKeyEntry TrustedCertificateEntryStoring a Key in keystoreIn this section, we will learn how to store a key in a keystore. To store a key in thekeystore, follow the steps given below.Step 1: Create a KeyStore objectThe getInstance() method of the KeyStore class of the java.security package acceptsa string value representing the type of the keystore and returns a KeyStore object.Create an object of the KeyStore class using the getInstance() method as shown below.//Creating the KeyStore objectKeyStore keyStore KeyStore.getInstance("JCEKS");Step 2: Load the KeyStore objectThe load() method of the KeyStore class accepts a FileInputStream object representingthe keystore file and a String parameter specifying the password of the KeyStore.In general, the KeyStore is stored in the file named cacerts, in the location C:/ProgramFiles/Java/jre1.8.0 101/lib/security/ and its default password is changeit, load itusing the load() method as shown below.//Loading the KeyStore objectchar[] password "changeit".toCharArray();String path "C:/Program Files/Java/jre1.8.0 101/lib/security/cacerts";java.io.FileInputStream fis new FileInputStream(path);keyStore.load(fis, password);Step 3: Create the KeyStore.ProtectionParameter objectInstantiate the KeyStore.ProtectionParameter as shown below.12

Java Cryptography//Creating the KeyStore.ProtectionParameter objectKeyStore.ProtectionParameter protectionParam newKeyStore.PasswordProtection(password);Step 4: Create a SecretKey objectCreate the SecretKey (interface) object by instantiating its Sub class SecretKeySpec.While instantiating, you need to pass password and algorithm as parameters to itsconstructor as shown below.//Creating SecretKey objectSecretKey mySecretKey new SecretKeySpec(new String(keyPassword).getBytes(),"DSA");Step 5: Create a SecretKeyEntry objectCreate an object of the SecretKeyEntry class by passing the SecretKey object createdin the above step as shown below.//Creating SecretKeyEntry objectKeyStore.SecretKeyEntry secretKeyEntry newKeyStore.SecretKeyEntry(mySecretKey);Step 6: Set an entry to the KeyStoreThe setEntry() method of the KeyStore class accepts a String parameter representingthe keystore entry alias, a SecretKeyEntry object, a ProtectionParameter object and,stores the entry under the given alias.Set the entry to the keystore using the setEntry() method as shown below.//Set the entry to the keystorekeyStore.setEntry("secretKeyAlias", secretKeyEntry, protectionParam);ExampleThe following example stores keys into the keystore existing in the “cacerts” file (windows10 operating system).import java.io.FileInputStream;import java.security.KeyStore;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;13

Java Cryptographypublic class StoringIntoKeyStore{public static void main(String args[]) throws Exception{//Creating the KeyStore objectKeyStore keyStore KeyStore.getInstance("JCEKS");//Loading the KeyStore objectchar[] password "changeit".toCharArray();String path "C:/Program Files/Java/jre1.8.0 101/lib/security/cacerts";java.io.FileInputStream fis new FileInputStream(path);keyStore.load(fis, password);//Creating the KeyStore.ProtectionParameter objectKeyStore.ProtectionParameter protectionParam g SecretKey objectSecretKey mySecretKey new ating SecretKeyEntry objectKeyStore.SecretKeyEntry secretKeyEntry etEntry("secretKeyAlias", secretKeyEntry, protectionParam);//Storing the KeyStore objectjava.io.FileOutputStream fos null;fos new re.store(fos, password);System.out.println("data stored");}}OutputThe above program generates the following output:System.out.println("data stored");14

6. Java Cryptography — Retrieving KeysJava CryptographyIn this chapter, we will learn how to retrieve a key from the keystore using JavaCryptography.To retrieve a key from the keystore, follow the steps given below.Step 1: Create a KeyStore objectThe getInstance() method of the KeyStore class of the java.security package acceptsa string value representing the type of the keystore and returns a KeyStore object.Create an object of the KeyStore class using this method as shown below.//Creating the KeyStore objectKeyStore keyStore KeyStore.getInstance("JCEKS");Step 2: Load the KeyStore objectThe load() method of the KeyStore class accepts a FileInputStream object representingthe keystore file and a String parameter specifying the password of the KeyStore.In general, the KeyStore is stored in the file named cacerts, in the location C:/ProgramFiles/Java/jre1.8.0 101/lib/security/ and its default password is changeit; load itusing the load() method as shown below.//Loading the KeyStore objectchar[] password "changeit".toCharArray();String path "C:/Program Files/Java/jre1.8.0 101/lib/security/cacerts";java.io.FileInputStream fis new FileInputStream(path);keyStore.load(fis, password);Step 3: Create the KeyStore.ProtectionParameter objectInstantiate the KeyStore.ProtectionParameter as shown below.//Creating the KeyStore.ProtectionParameter objectKeyStore.ProtectionParameter protectionParam newKeyStore.PasswordProtection(password);Step 4: Create a SecretKey objectCreate the SecretKey (interface) object by instantiating its Sub class SecretKeySpec.While instantiating, you need to pass password and algorithm as parameters to itsconstructor as shown below.15

Java Cryptography//Creating SecretKey objectSecretKey mySecretKey new SecretKeySpec(new String(keyPassword).getBytes(),"DSA");Step 5: Create a SecretKeyEntry objectCreate an object of the SecretKeyEntry class by passing the SecretKey object createdin the above step as shown below.//Creating SecretKeyEntry objectKeyStore.SecretKeyEntry secretKeyEntry newKeyStore.SecretKeyEntry(mySecretKey);Step 6: Set an entry to the KeyStoreThe setEntry() method of the KeyStore class accepts a String parameter representingthe keystore entry alias, a SecretKeyEntry object, a ProtectionParameter object and,stores the entry under the given alias.Set the entry to the keystore using the setEntry() method as shown below.//Set the entry to the keystorekeyStore.setEntry("secretKeyAlias", secretKeyEntry, protectionParam);Step 7: Create the KeyStore.SecretKeyEntry objectThe getEntry() method of the KeyStore class accepts an alias (String parameter) and, anobject of the ProtectionParameter class as parameters and returns a KeyStoreEntryobject then you can cast this it into the KeyStore.SecretKeyEntry object.Create an object of the KeyStore.SecretKeyEntry class by passing the alias for requiredkey and the protection parameter object created in the previous steps, to the getEntry()method as shown below.//Creating the KeyStore.SecretKeyEntry objectKeyStore.SecretKeyEntry secretKeyEnt KeyAlias", protectionParam);Step 8: Create the key object of the retrieved entryThe getSecretKey() method of the SecretKeyEntry class returns a SecretKey object.Using this method, create a SecretKey object as shown below.//Creating SecretKey objectSecretKey mysecretKey ecretKey);16

Java CryptographyExampleFollowing example shows how to retrieve keys from a key store. Here, we store a key ina keystore, which is in the “cacerts” file (windows 10 operating system), retrieve it, anddisplay some of the properties of it such as the algorithm used to generate the key and,the format of the retrieved key.import java.io.FileInputStream;import java.security.KeyStore;import java.security.KeyStore.ProtectionParameter;import java.security.KeyStore.SecretKeyEntry;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;public class RetrievingFromKeyStore{public static void main(String args[]) throws Exception{//Creating the KeyStore objectKeyStore keyStore KeyStore.getInstance("JCEKS");//Loading the the KeyStore objectchar[] password "changeit".toCharArray();java.io.FileInputStream fis new FileInputStream("C:/ProgramFiles/Java/jre1.8.0 101/lib/security/cacerts");keyStore.load(fis, password);//Creating the KeyStore.ProtectionParameter objectProtectionParameter protectionParam g SecretKey objectSecretKey mySecretKey new ating SecretKeyEntry objectSecretKeyEntry secretKeyEntry new retKeyAlias", secretKeyEntry, protectionParam);//Storing the KeyStore object17

Java Cryptographyjava.io.FileOutputStream fos null;fos new re.store(fos, password);//Retrieving the KeyStore.SecretKeyEntry object for existing entrySecretKeyEntry secretKeyEnt , protectionParam);//Creating SecretKey objectSecretKey mysecretKey gorithm used to generate key :" rmat used for the key: " mysecretKey.getFormat());}}OutputThe above program generates the following output:Algorithm used to generate key: DSAFormat of the key: RAW18

Java CryptographyGenerating Keys19

7. Java Cryptography — KeyGeneratorJava CryptographyJava provides the KeyGenerator class. This class is used to generate secret keys andobjects of this class are reusable.To generate keys using the KeyGenerator class, follow the steps given below.Step 1: Create a KeyGenerator objectThe KeyGenerator class provides the getInstance() method which accepts a Stringvariable representing the required key-generating algorithm and returns a KeyGeneratorobject that generates secret keysCreate KeyGenerator object using the getInstance() method as shown below.//Creating a KeyGenerator objectKeyGenerator keyGen KeyGenerator.getInstance("DES");Step 2: Create SecureRandom objectThe SecureRandom class of the java.Security package provides a strong randomnumber generator which is used to generate random numbers in Java. Instantiate thisclass as shown below.//Creating a SecureRandom objectSecureRandom secRandom new SecureRandom();Step 3: Initialize the KeyGeneratorThe KeyGenerator class provides the init() method. This method accepts theSecureRandom object and initializes the current KeyGenerator.Initialize the KeyGenerator object created in the previous step using the init() method.//Initializing the g example demonstrates the key generation of the secret key using theKeyGenerator class of the javax.crypto package.import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import java.security.Key;import java.security.SecureRandom;20

Java Cryptographypublic class KeyGeneratorExample {public static void main(String args[]) throws Exception{//Creating a KeyGenerator objectKeyGenerator keyGen KeyGenerator.getInstance("DES");//Creating a SecureRandom objectSecureRandom secRandom new SecureRandom();//Initializing the rating a keyKey key r cipher init(cipher.ENCRYPT MODE, key);String msg new String("Hi how are you");byte[] bytes bytes);}}OutputThe above program generates the following fdc421

8. Java Cryptography — KeyPairGeneratorJava CryptographyJava provides the KeyPairGenerator class. This class is used to generate pairs of publicand private keys. To generate keys using the KeyPairGenerator class, follow the stepsgiven below.Step 1: Create a KeyPairGenerator objectThe KeyPairGenerator class provides the getInstance() method, which accepts a Stringvariable representing the required key-generating algorithm and returns aKeyPairGenerator object that generates keys.Create KeyPairGenerator object using the getInstance() method as shown below.//Creating KeyPair generator objectKeyPairGenerator keyPairGen KeyPairGenerator.getInstance("DSA");Step 2: Initialize the KeyPairGenerator objectThe KeyPairGenerator class provides the initialize() method. This method is used toinitialize the key pair generator. This method accepts an integer value representing thekey size.Initialize the KeyPairGenerator object created in the previous step using the initialize()method as shown below.//Initializing the KeyPairGeneratorkeyPairGen.initialize(2048);Step 3: Generate the KeyPairGeneratorYou can generate the KeyPair usingKeyPairGenerator class.the generateKeyPair()methodof the//Generate the pair of keysKeyPair pair keyPairGen.generateKeyPair();Step 4: Get the private key/public keyYou can get the private key from the generated KeyPair object using the getPrivate()method as shown below.//Getting the private key from the key pairPrivateKey privKey pair.getPrivate();You can get the public key from the generated KeyPair object using the getPublic()method as shown below.22

Java Cryptography//Getting the public key from the key pairPublicKey publicKey pair.getPublic();ExampleFollowing example demonstrates the key generation of the secret key using theKeyPairGenerator class of the javax.crypto package.import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.PrivateKey;import java.security.PublicKey;public class KeyPairGenertorExample {public static void main(String args[]) throws Exception{//Creating KeyPair generator objectKeyPairGenerator keyPairGen KeyPairGenerator.get

Cryptography in Java The Java Cryptography Architecture (JCA) is a set of APIs to implement concepts of modern cryptography such as digital signatures, message digests, certificates, encryption, key generation and management, and secure random number generation, etc. Using JCA, developers c

Related Documents:

Cryptography and Java Java provides cryptographic functionality using two APIs: JCA - Java Cryptography Architecture - security framework integrated with the core Java API JCE - Java Cryptography Extension - Extensions for strong encryption (exported after 2000 US export policy)

java.io Input and output java.lang Language support java.math Arbitrary-precision numbers java.net Networking java.nio "New" (memory-mapped) I/O java.rmi Remote method invocations java.security Security support java.sql Database support java.text Internationalized formatting of text and numbers java.time Dates, time, duration, time zones, etc.

Java Version Java FAQs 2. Java Version 2.1 Used Java Version This is how you find your Java version: Start the Control Panel Java General About. 2.2 Checking Java Version Check Java version on https://www.java.com/de/download/installed.jsp. 2.3 Switching on Java Console Start Control Panel Java Advanced. The following window appears:

Cryptography: Java Cryptography Architecture (JCA), Java Cryptography Extension (JCE) Secure network communications: Java Secure Socket Extension (JSSE), Java Generic Security Service (JGSS), Simple Authentication and Security Layer (SASL) Public key infrastructure: X.509 and Certificate Revoca-tion Lists (CRL) in java.security.cert, Java .

3. _ is a software that interprets Java bytecode. a. Java virtual machine b. Java compiler c. Java debugger d. Java API 4. Which of the following is true? a. Java uses only interpreter b. Java uses only compiler. c. Java uses both interpreter and compiler. d. None of the above. 5. A Java file with

JAVA TUTORIAL Simply Easy Learning by tutorialspoint.com tutorialspoint.com. TUTORIALS POINT Simply Easy Learning ABOUT THE TUTORIAL Java Tutorial Java is a high-level programming language originally developed by Sun Microsystems and released in 1995. Java runs on a variety of platforms, such as Windows, Mac OS, and the various versions of UNIX.

of public-key cryptography; providing hands-on experience with some of the most common encryption algorithms that are used on the internet today. Modern Cryptography Introduction Outline 1 Introduction 2 Historical Cryptography Caesar Cipher 3 Public{Key Cryptography

The Asset Management Strategy is aligned to other key policies including, but is not limited to: Allocations Policy, Procurement Strategy, Repairs and Maintenance Policy, Estate Management Policy, Adaptations Policy, and Rent and Service Charge Policy. The AMS is also aligned to the current relevant legislation and statutory requirements outlined within each Policy. In .