Dear Setori,
I am also new to crypto++.
For my current project, I need encryption between C++ and Java.
I was trying to fix your c++ code.
Since this post is a few years old, I was wondering if you already managed
to fix the code?
I will be happy to hear from you.
Greetings,
Florian
Op woensdag 12 september 2007 11:24:44 UTC+2 schreef Setori het volgende:
>
> Hi All
>
> I am rather new to crypto++ hence this post.
>
> problem:
>
> We have a contactless memory card project. Single sign on. We wish to
> encrypt user details (standard 2.0 .net stuff) then gina.dll will
> decrypt the ciphertext with crypto++ then encrypt it again and send it
> off to another backend server written in java. which will then decrypt
> it using java (Java Cryptography Extension).
>
> I have managed to get .net and java to get the same output. except
> crypto++.
>
> My question: is it possible for crypto++ to decrypt .net aes
> encryption then encrypt it again first with aes then RSA (or ECC) to
> send off to java server.... then will java server be able to decrypt
> using crypto++?
>
> (alternative solution: is it better simply to just write a crypto+
> + .net wrapper for windows administration program. keep crypto++
> untouched in gina.dll and use Java's JNI to talk with a the crypto++
> library on the server thus keeping everything rather standard.)
>
> Look forward to your response
>
> Stewart
>
> some examples of what I am doing.
>
> here is the out put of each example
>
> Java
> INTEGRATED encrypted is rJnW+7kr4mukfoNkv2QvJw==
> rJnW+7kr4mukfoNkv2QvJw== decrypted is INTEGRATED
>
> Crypto++
> INTEGRATED encrypted is 瑱蛀?鈑�B僤縟/'
> 瑱蛀?鈑�B僤縟/'decrypted is INTEGRATED
>
> .NET
> INTEGRATED encrypted is rJnW+7kr4mukfoNkv2QvJw==
> rJnW+7kr4mukfoNkv2QvJw== decrypted is INTEGRATED
>
>
> .NET_________________________________________
>
> using System;
> using System.Security.Cryptography;
> using System.Text;
>
>
> namespace aes1
> {
> class CryptTest
> {
> static void Main(string[] args)
> {
> try
> {
> byte[] key = new byte[16] { 0x01, 0x01, 0x01, 0x01,
> 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
> 0x01 };
> byte[] iv = new byte[16] { 0x01, 0x01, 0x01, 0x01,
> 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
> 0x01 };
>
> string text="INTEGRATED";
> System.Console.WriteLine(".NET");
> string encrypted = encrypt(text,iv,key);
> System.Console.WriteLine( text + " encrypted is " +
> encrypted);
> string decrypted = decrypt(encrypted,iv,key);
> System.Console.WriteLine( encrypted + " decrypted is " +
> decrypted);
> Console.ReadLine();
>
> }
> catch (Exception e)
> {
> System.Console.WriteLine(e.StackTrace);
> }
>
> }
>
> public static string encrypt(string text,byte[] iv, byte[]
> key)
> {
> RijndaelManaged rijndaelCipher = new
> RijndaelManaged();
>
> rijndaelCipher.Mode = CipherMode.CBC;
>
> rijndaelCipher.Padding = PaddingMode.PKCS7;
>
> rijndaelCipher.KeySize = 128;
>
> rijndaelCipher.BlockSize = 128;
>
> rijndaelCipher.Key = key;
>
> rijndaelCipher.IV = iv;
>
> ICryptoTransform transform =
> rijndaelCipher.CreateEncryptor();
>
> byte [] plainText = Encoding.UTF8.GetBytes(text);
>
> byte[] cipherBytes =
> transform.TransformFinalBlock(plainText, 0,
> plainText.Length);
>
> return Convert.ToBase64String(cipherBytes);
>
> }
>
> public static string decrypt(string text,byte[] iv, byte[]
> key)
>
> {
> RijndaelManaged rijndaelCipher = new
> RijndaelManaged();
>
> rijndaelCipher.Mode = CipherMode.CBC;
>
> rijndaelCipher.Padding = PaddingMode.PKCS7;
>
> rijndaelCipher.KeySize = 128;
>
> rijndaelCipher.BlockSize = 128;
>
> byte[] encryptedData =
> Convert.FromBase64String(text);
>
> rijndaelCipher.Key = key;
>
> rijndaelCipher.IV = iv;
>
> ICryptoTransform transform =
> rijndaelCipher.CreateDecryptor();
>
> byte[] plainText =
> transform.TransformFinalBlock(encryptedData, 0,
> encryptedData.Length);
>
> return Encoding.UTF8.GetString(plainText);
>
> }
>
>
> }
> }
> _________________________________________
>
> Java
> _________________________________________
>
> import java.io.IOException;
> import java.io.UnsupportedEncodingException;
> import java.security.InvalidAlgorithmParameterException;
> import java.security.InvalidKeyException;
> import java.security.NoSuchAlgorithmException;
>
> import javax.crypto.BadPaddingException;
> import javax.crypto.Cipher;
> import javax.crypto.IllegalBlockSizeException;
> import javax.crypto.NoSuchPaddingException;
> import javax.crypto.spec.IvParameterSpec;
> import javax.crypto.spec.SecretKeySpec;
>
> import sun.misc.BASE64Decoder;
> import sun.misc.BASE64Encoder;
>
>
> public class aes1 {
> public static void main(String[] args) {
> try{
>
> byte[] key = {0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
> 0x01, 0x01,
> 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01};
> byte[] iv = {0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
> 0x01,
> 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01};
>
> String text = "INTEGRATED";
> String encrypted = encrypt(text, iv, key);
> System.out.println("Java");
> System.out.println(text + " encrypted is " + encrypted );
> String decrypted = decrypt(encrypted,iv,key);
> System.out.println(encrypted + " decrypted is " +
> decrypted );
> }catch (Exception e){
> e.printStackTrace();
> }
> }
>
> public static String encrypt(String text, byte[] iv, byte[] key)
> throws Exception{
> Cipher cipher =
> Cipher.getInstance("AES/CBC/PKCS5Padding");
>
> SecretKeySpec keySpec = new SecretKeySpec(key,
> "AES");
> IvParameterSpec ivSpec = new IvParameterSpec(iv);
>
> cipher.init(Cipher.ENCRYPT_MODE,keySpec,ivSpec);
> byte [] results =
> cipher.doFinal(text.getBytes("UTF-8"));
> BASE64Encoder encoder = new BASE64Encoder();
> return encoder.encode(results);
> }
>
> public static String decrypt(String text, byte[] iv, byte[] key)
> throws Exception{
> Cipher cipher =
> Cipher.getInstance("AES/CBC/PKCS5Padding");
>
> SecretKeySpec keySpec = new SecretKeySpec(key,
> "AES");
> IvParameterSpec ivSpec = new IvParameterSpec(iv);
> cipher.init(Cipher.DECRYPT_MODE,keySpec,ivSpec);
>
> BASE64Decoder decoder = new BASE64Decoder();
> byte [] results =
> cipher.doFinal(decoder.decodeBuffer(text));
> return new String(results,"UTF-8");
>
>
> }
>
> }
> _________________________________________________
> C++ Crypto++
> _________________________________________________
> #include "StdAfx.h"
>
> // Runtime Includes
> #include <iostream>
> #include <iomanip>
>
> // Crypto++ Includes
> #include "cryptlib.h"
> #include "aes.h" // AES
> #include "modes.h" // CBC_Mode< >
> #include "filters.h" // StringSource
>
> int main(int argc, char* argv[]) {
>
>
> byte key[ CryptoPP::AES::DEFAULT_KEYLENGTH ] =
> { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
> 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 };
>
> byte iv[ CryptoPP::AES::BLOCKSIZE ] =
> { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
> 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 };
>
> std::string PlainText = "INTEGRATED";
> std::cout << "\n" << "Crypto++" << std::endl;
> std::cout << PlainText << " encrypted is " ;
>
> // Cipher Text Sink
> std::string CipherText;
>
> // Encryption
> CryptoPP::CBC_Mode<CryptoPP::AES>::Encryption
> Encryptor( key, sizeof(key), iv );
>
> CryptoPP::StringSource( PlainText, true,
> new CryptoPP::StreamTransformationFilter( Encryptor,
> new CryptoPP::StringSink( CipherText )
> ) // StreamTransformationFilter
> ); // StringSource
>
> // Debug
> std::cout << CipherText << std::endl;
>
>
> ///////////////////////////////////////
> // DMZ //
> ///////////////////////////////////////
>
> // Recovered Text Sink
> std::string RecoveredText;
>
> // Decryption
> CryptoPP::CBC_Mode<CryptoPP::AES>::Decryption
> Decryptor( key, sizeof(key), iv );
>
> CryptoPP::StringSource( CipherText, true,
> new CryptoPP::StreamTransformationFilter( Decryptor,
> new CryptoPP::StringSink( RecoveredText )
> ) // StreamTransformationFilter
> ); // StringSink
>
> // Debug
> std::cout << CipherText << "decrypted is " << RecoveredText <<
> std::endl;
> std::cout << std::endl;
>
> return 0;
> }
>
>
--
--
You received this message because you are subscribed to the "Crypto++ Users"
Google Group.
To unsubscribe, send an email to [email protected].
More information about Crypto++ and this group is available at
http://www.cryptopp.com.
---
You received this message because you are subscribed to the Google Groups
"Crypto++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.