Hallo zusammen,
habe ein Problem. Ich will in Flash einen String mit einem PublicKey (RSA) verschlüsseln (dazu benutze ich http://crypto.hurlant.com) um diesen dann in Java mit dem entsprechenden PrivateKey wieder zu entschlüsseln.
Actionscript:
wenn ich jetzt das was in encrypt.text (ist ein textfeld) steht in java wie folgt entschlüsseln will (der übersciht halber ohne try/catch):
liefert Java immer:
Exception in thread "main" javax.crypto.IllegalBlockSizeException: Data must not be longer than 128 bytes
Woran kann das liegen? jemand ideen?
gruss
giggs
habe ein Problem. Ich will in Flash einen String mit einem PublicKey (RSA) verschlüsseln (dazu benutze ich http://crypto.hurlant.com) um diesen dann in Java mit dem entsprechenden PrivateKey wieder zu entschlüsseln.
Actionscript:
Code:
private var N:String ="1173149368060...";
private var E:String = "65537";
var plain:String = "Das hier will ich verschlüsseln";
var rsa:RSAKey = RSAKey.parsePublicKey(N, E);
var src:ByteArray = Base64.decodeToByteArray(Base64.encode(plain));
var dst:ByteArray = new ByteArray;
rsa.encrypt(src, dst, src.length);
encrypt.text = Base64.encodeByteArray(dst);
wenn ich jetzt das was in encrypt.text (ist ein textfeld) steht in java wie folgt entschlüsseln will (der übersciht halber ohne try/catch):
Code:
static String mod = "1173149.....";
static String expPri = "6783240330...";
final RSAPrivateKeySpec rsaPrivateKeyspec = new RSAPrivateKeySpec(new BigInteger(mod), new BigInteger(expPri));
PrivateKey privateKey = null;
privateKey = rsaFactory.generatePrivate(rsaPrivateKeyspec);
Cipher rsaCipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
rsaCipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] cleartext = rsaCipher.doFinal((new BASE64Decoder()).decodeBuffer("String aus flash"));
String decrypted = new String(cleartext);
liefert Java immer:
Exception in thread "main" javax.crypto.IllegalBlockSizeException: Data must not be longer than 128 bytes
Woran kann das liegen? jemand ideen?
gruss
giggs