This walkthrough demonstrates how to encrypt and decrypt content. The code examples are designed for a Windows Forms application. This application does not demonstrate real world scenarios, such as using smart cards. Instead, it demonstrates the fundamentals of encryption and decryption.
RSAgeneratekey generates a key pair and returns it in a newly allocated RSA structure. The pseudo-random number generator must be seeded prior to calling RSAgeneratekey. The modulus size will be num bits, and the public exponent will be e. Key sizes with num. To create keys, encrypt, and decrypt Click the Create Keys button. Click the Export Public Key button. Click the Encrypt File button and select a file. Click the Decrypt File button and select the file just encrypted. Examine the file just decrypted. Config t crypto key generate rsa exit Then ssh to the router and complete the config. Or just enable telnet if you can get away with it. Config t vty 0 4 transport input ssh telnet exit I have a perl script that does this to reset enable passwords. Generate 1024-bit RSA keys. Note: In Packet Tracer, enter the crypto key generate rsa command and press Enter to continue. RTA(config)# crypto key generate rsa Block anyone for three minutes who fails to log in after four attempts within a two-minute period. RTA(config)# login block-for 180 attempts 4. Find answers to SSH and crypto key generate command from the expert community at Experts Exchange. I have only entered the 'crypto key generate rsa' and then hit enter key Then it prompts me for modulus size default of 512 but I usually change to 1024.
This walkthrough uses the following guidelines for encryption:
Use the RijndaelManaged class, a symmetric algorithm, to encrypt and decrypt data by using its automatically generated Key and IV.
Use the RSACryptoServiceProvider, an asymmetric algorithm, to encrypt and decrypt the key to the data encrypted by RijndaelManaged. Asymmetric algorithms are best used for smaller amounts of data, such as a key.
Note
If you want to protect data on your computer instead of exchanging encrypted content with other people, consider using the ProtectedData or ProtectedMemory classes.
The following table summarizes the cryptographic tasks in this topic.
Task | Description |
---|---|
Creating a Windows Forms application | Lists the controls that are required to run the application. |
Declaring global objects | Declares string path variables, the CspParameters, and the RSACryptoServiceProvider to have global context of the Form class. |
Creating an asymmetric key | Creates an asymmetric public and private key value pair and assigns it a key container name. |
Encrypting a file | Displays a dialog box to select a file for encryption and encrypts the file. |
Decrypting a file | Displays a dialog box to select an encrypted file for decryption and decrypts the file. |
Getting a private key | Gets the full key pair using the key container name. |
Exporting a public key | Saves the key to an XML file with only public parameters. |
Importing a public key | Loads the key from an XML file into the key container. |
Testing the application | Lists procedures for testing this application. |
You need the following components to complete this walkthrough:
Most of the code examples in this walkthrough are designed to be event handlers for button controls. The following table lists the controls required for the sample application and their required names to match the code examples.
Control | Name | Text property (as needed) |
---|---|---|
Button | buttonEncryptFile | Encrypt File |
Button | buttonDecryptFile | Decrypt File |
Button | buttonCreateAsmKeys | Create Keys |
Button | buttonExportPublicKey | Export Public Key |
Button | buttonImportPublicKey | Import Public Key |
Button | buttonGetPrivateKey | Get Private Key |
Label | label1 | Key not set |
OpenFileDialog | openFileDialog1 | |
OpenFileDialog | openFileDialog2 |
Double-click the buttons in the Visual Studio designer to create their event handlers.
Add the following code to the Form's constructor. Edit the string variables for your environment and preferences.
This task creates an asymmetric key that encrypts and decrypts the RijndaelManaged key. This key was used to encrypt the content and it displays the key container name on the label control.
Add the following code as the Click
event handler for the Create Keys
button (buttonCreateAsmKeys_Click
).
This task involves two methods: the event handler method for the Encrypt File
button (buttonEncryptFile_Click
) and the EncryptFile
method. The first method displays a dialog box for selecting a file and passes the file name to the second method, which performs the encryption.
The encrypted content, key, and IV are all saved to one FileStream, which is referred to as the encryption package.
The EncryptFile
method does the following:
Creates a RijndaelManaged symmetric algorithm to encrypt the content.
Creates an RSACryptoServiceProvider object to encrypt the RijndaelManaged key.
Uses a CryptoStream object to read and encrypt the FileStream of the source file, in blocks of bytes, into a destination FileStream object for the encrypted file.
Determines the lengths of the encrypted key and IV, and creates byte arrays of their length values.
Writes the Key, IV, and their length values to the encrypted package.
The encryption package uses the following format:
Key length, bytes 0 - 3
IV length, bytes 4 - 7
Encrypted key
IV
Cipher text
You can use the lengths of the key and IV to determine the starting points and lengths of all parts of the encryption package, which can then be used to decrypt the file.
Add the following code as the Click
event handler for the Encrypt File
button (buttonEncryptFile_Click
).
Add the following EncryptFile
method to the form.
This task involves two methods, the event handler method for the Decrypt File
button (buttonDecryptFile_Click
), and the DecryptFile
method. The first method displays a dialog box for selecting a file and passes its file name to the second method, which performs the decryption.
The Decrypt
method does the following:
Creates a RijndaelManaged symmetric algorithm to decrypt the content.
Reads the first eight bytes of the FileStream of the encrypted package into byte arrays to obtain the lengths of the encrypted key and the IV.
Extracts the key and IV from the encryption package into byte arrays.
Creates an RSACryptoServiceProvider object to decrypt the RijndaelManaged key.
Uses a CryptoStream object to read and decrypt the cipher text section of the FileStream encryption package, in blocks of bytes, into the FileStream object for the decrypted file. When this is finished, the decryption is completed.
Add the following code as the Click
event handler for the Decrypt File
button.
Add the following DecryptFile
method to the form.
This task saves the key created by the Create Keys
button to a file. It exports only the public parameters.
This task simulates the scenario of Alice giving Bob her public key so that he can encrypt files for her. He and others who have that public key will not be able to decrypt them because they do not have the full key pair with private parameters.
Add the following code as the Click
event handler for the Export Public Key
button (buttonExportPublicKey_Click
).
This task loads the key with only public parameters, as created by the Export Public Key
button, and sets it as the key container name.
This task simulates the scenario of Bob loading Alice's key with only public parameters so he can encrypt files for her.
Add the following code as the Click
event handler for the Import Public Key
button (buttonImportPublicKey_Click
).
This task sets the key container name to the name of the key created by using the Create Keys
button. The key container will contain the full key pair with private parameters.
This task simulates the scenario of Alice using her private key to decrypt files encrypted by Bob.
Add the following code as the Click
event handler for the Get Private Key
button (buttonGetPrivateKey_Click
).
After you have built the application, perform the following testing scenarios.
Click the Create Keys
button. The label displays the key name and shows that it is a full key pair.
Click the Export Public Key
button. Note that exporting the public key parameters does not change the current key.
Click the Encrypt File
button and select a file.
Click the Decrypt File
button and select the file just encrypted.
Examine the file just decrypted.
Close the application and restart it to test retrieving persisted key containers in the next scenario.
Click the Import Public Key
button. The label displays the key name and shows that it is public only.
Click the Encrypt File
button and select a file.
Click the Decrypt File
button and select the file just encrypted. This will fail because you must have the private key to decrypt.
This scenario demonstrates having only the public key to encrypt a file for another person. Typically that person would give you only the public key and withhold the private key for decryption.
Click the Get Private Key
button. The label displays the key name and shows whether it is the full key pair.
Tropico 4 Product Key Information: This product that you are purchasing is an activation code for Tropico 4 taken directly from a sealed retail copy of the game. You can use this activation code in order to install Tropico 4 and play singleplayer and online multiplayer. These keys are not for steam. Mar 10, 2013 Registered account online launcher.kalypsomedia.com, but I can not find the key to activate the game. I know that you can play offline without activation, but it's not comfortable! Login Store Community Support Change language. Tropico 4 is such a good game and i've never had a problem with the silly little DRM/Kalypso Launcher. Product key generator tropico 4.
Click the Decrypt File
button and select the file just encrypted. This will be successful because you have the full key pair to decrypt.
Creating and managing keys is an important part of the cryptographic process. Symmetric algorithms require the creation of a key and an initialization vector (IV). The key must be kept secret from anyone who should not decrypt your data. The IV does not have to be secret, but should be changed for each session. Asymmetric algorithms require the creation of a public key and a private key. The public key can be made public to anyone, while the private key must known only by the party who will decrypt the data encrypted with the public key. This section describes how to generate and manage keys for both symmetric and asymmetric algorithms.
The symmetric encryption classes supplied by the .NET Framework require a key and a new initialization vector (IV) to encrypt and decrypt data. Whenever you create a new instance of one of the managed symmetric cryptographic classes using the parameterless constructor, a new key and IV are automatically created. Anyone that you allow to decrypt your data must possess the same key and IV and use the same algorithm. Generally, a new key and IV should be created for every session, and neither the key nor IV should be stored for use in a later session.
To communicate a symmetric key and IV to a remote party, you would usually encrypt the symmetric key by using asymmetric encryption. Sending the key across an insecure network without encrypting it is unsafe, because anyone who intercepts the key and IV can then decrypt your data. For more information about exchanging data by using encryption, see Creating a Cryptographic Scheme.
The following example shows the creation of a new instance of the TripleDESCryptoServiceProvider class that implements the TripleDES algorithm.
When the previous code is executed, a new key and IV are generated and placed in the Key and IV properties, respectively.
Sometimes you might need to generate multiple keys. In this situation, you can create a new instance of a class that implements a symmetric algorithm and then create a new key and IV by calling the GenerateKey and GenerateIV methods. The following code example illustrates how to create new keys and IVs after a new instance of the symmetric cryptographic class has been made.
When the previous code is executed, a key and IV are generated when the new instance of TripleDESCryptoServiceProvider is made. Another key and IV are created when the GenerateKey and GenerateIV methods are called.
The .NET Framework provides the RSACryptoServiceProvider and DSACryptoServiceProvider classes for asymmetric encryption. These classes create a public/private key pair when you use the parameterless constructor to create a new instance. Asymmetric keys can be either stored for use in multiple sessions or generated for one session only. While the public key can be made generally available, the private key should be closely guarded.
A public/private key pair is generated whenever a new instance of an asymmetric algorithm class is created. After a new instance of the class is created, the key information can be extracted using one of two methods:
The ToXmlString method, which returns an XML representation of the key information.
The ExportParameters method, which returns an RSAParameters structure that holds the key information.
Both methods accept a Boolean value that indicates whether to return only the public key information or to return both the public-key and the private-key information. An RSACryptoServiceProvider class can be initialized to the value of an RSAParameters structure by using the ImportParameters method.
Asymmetric private keys should never be stored verbatim or in plain text on the local computer. If you need to store a private key, you should use a key container. For more on how to store a private key in a key container, see How to: Store Asymmetric Keys in a Key Container.
The following code example creates a new instance of the RSACryptoServiceProvider class, creating a public/private key pair, and saves the public key information to an RSAParameters structure.