Encryption
Encryption is performed using the Crypto Library at Stanford Javascript (SJCL). The following is a complete encryption example, divided into two parts. The first is password-based password output with PBKDF2 . In the second part, the actual encryption takes place with the derivative key and the initialization vector (IV). Note that salt and IV are hardcoded, so it is easier to provide a solution for decrypting C #.
// Key derivation… var password = "password"; var salt = sjcl.codec.hex.toBits( "5f9bcef98873d06a" // Random generated with sjcl.random.randomWords(2, 0); ); // Hex encoded with sjcl.codec.hex.toBits(randomSalt); var iterations = 1000; var keySize = 128; var encryptionKey = sjcl.misc.pbkdf2(password, salt, iterations, keySize); // Encryption… var blockCipher = new sjcl.cipher.aes(encryptionKey); var plainText = sjcl.codec.utf8String.toBits("secret"); var iv = sjcl.codec.hex.toBits("8291ff107e798a29"); var adata = ""; // What is adata? var tag = 64; // What is tag? I think it is authentication strength. var cipherText = sjcl.mode.ccm.encrypt(blockCipher, plainText, iv, adata, tag);
The value of the encryptionKey variable:
- SJCL Bitmap:
[ -74545279, -553931361, -1590906567, 1562838103 ] - Hex encoded:
fb8e8781defbad9fa12cb1395d270457 - Base64 encoded:
+46Hgd77rZ+hLLE5XScEVw==
The value of the variable iv :
- SJCL bit array:
[ -2104361200, 2121894441 ] - Hexadecimal code:
8291ff107e798a29 - Base64 encoded:
gpH/EH55iik=
The value of the cipherText variable:
- SJCL bit array:
[ 1789401157, -1485204800, -440319203, 17593459146752 ] - Hex encoded:
6aa81845a77992c0e5c1431d4be2 - Base64 encoded:
aqgYRad5ksDlwUMdS+I=
Question
The question arises:
How can I decrypt text using Bouncy Castle ?
An example of working decryption after using jbtule below
using Org.BouncyCastle.Crypto.Engines; using Org.BouncyCastle.Crypto.Modes; using Org.BouncyCastle.Crypto.Parameters; namespace SjclHelpers { public static class Encryption {
I get a System.ArgumentException . I think he complains that one of the byte arrays is short.
Boncy Castle is available on the NuGet website at this location: http://nuget.org/packages/BouncyCastle .
ABOUT
The AES / CCM decryption solution will be part of the CodePlex SjclHelpers project and will be released as a NuGet package.
c # encryption aes bouncycastle
knut
source share