E R Гость
|
Добавлено: Чт Мар 20 2003 15:00 Заголовок сообщения: Проблемы с java security |
|
|
Есть апплет который должен общаться с серверной частью приложения по TCP при этом вся информация шифруется Однако при попытке создать класс для шифрования/дешифрования сообщений возникает следующее исключение :
java.lang.SecurityException: java/security/AccessController.doPrivileged: Only fully trusted classes can have native methods as members.
Ошибка возникает в первой строке конструктора при попытке вызова new SunJCE(); Пытался подписывать свой jar с апплетом с помощью jarsigner - ничего не клеится
Может кто-нибудь знает как исправить подобную ситуацию
текст класса такой:
import javax.crypto.*; import java.security.*; import java.security.spec.*; import java.io.*; import javax.crypto.spec.*; import java.util.*;
public class DESEncrypt {
SecretKey key = null; Cipher encryptor = null ,decryptor = null;
public DESEncrypt() { try{ java.security.Security.addProvider(new com.sun.crypto.provider.SunJCE()); System.out.println("Provider added");
KeyGenerator keyGenerator = KeyGenerator.getInstance("DES","SunJCE"); SecretKey key = keyGenerator.generateKey();
encryptor = Cipher.getInstance("DES"); encryptor.init(Cipher.ENCRYPT_MODE,key);
decryptor = Cipher.getInstance("DES"); decryptor.init(Cipher.DECRYPT_MODE,key); }//try catch(Exception e) { System.out.println("Failed to create DESEncrypt object: " + e); }//catch
}
public byte[] EncryptSeq(byte[] data) {
byte[] enc_data = null;
try{ enc_data = encryptor.doFinal(data);
}//try catch(Exception e) { System.out.println("Unable to encrypt: " + e);
}//catch return enc_data; }
public byte[] DecryptSeq(byte[] data) { byte[] enc_data = null;
try{ enc_data = decryptor.doFinal(data); }//try catch(Exception e) { System.out.println("Unable to decrypt: " + e);
}//catch return enc_data; }
public byte[] getKey() { return this.key.getEncoded(); }
public void setKey(byte[] key) { try{ this.key = new SecretKeySpec( key,"DES"); encryptor.init(Cipher.ENCRYPT_MODE,this.key); decryptor.init(Cipher.DECRYPT_MODE,this.key); } catch(Exception e) { System.out.println("Unable to set new DES key: " + e); }
}
} |
|