我正在黑莓中申请。在该应用程序中,我想使用 AES 算法加密字符串。是否可以在黑莓中使用 AES 算法?有任何API吗?提前致谢,
问问题
855 次
3 回答
3
尝试这个 -
useremail= CryptAes.AESEncryption(username_.getBytes());
CryptAes 类如下 -
public class CryptAes {
// First create the AES key based on the bytes in secretKey using keyLength bits as the length
static AESKey keydec = new AESKey("A3$1E*81234567891111111111111111".getBytes() );
static AESKey keyenc = new AESKey("A3$1E*81234567891111111111111111".getBytes() );
static AESKey keyenc128 = new AESKey("A3Q1EF8123456789".getBytes());
static AESKey keydec128 = new AESKey("A3Q1EF8123456789".getBytes());
private static byte[] iv = { 0x0a, 0x01, 0x02, 0x03, 0x04, 0x0b, 0x0c,
0x0d, 0x0a, 0x01, 0x02, 0x03, 0x04, 0x0b, 0x0c, 0x0d };
public static byte[] plainText= new byte[10000];
public static String AESEncryption(byte[] plainText) throws CryptoException, IOException {
AESEncryptorEngine engine = new AESEncryptorEngine( keyenc128 );
CBCEncryptorEngine cengine=new CBCEncryptorEngine(engine, new InitializationVector(iv));
PKCS5FormatterEngine fengine = new PKCS5FormatterEngine( engine );
ByteArrayOutputStream output = new ByteArrayOutputStream();
BlockEncryptor encryptor = new BlockEncryptor( fengine, output );
encryptor.write(plainText);
encryptor.close();
byte[] encryptedData = output.toByteArray(); output.close();
String st=new String(encryptedData);
byte[] base64 = Base64OutputStream.encode(encryptedData, 0, encryptedData.length, false, false);
//Base64Coder.encodeString(Byte.toString(plainText));
String str = new String(base64);
return str;
}
// sampleAESDecryption
public static String AESDecryption(byte[] cipherText, int dataLength ) throws CryptoException, IOException {
// Create the input stream based on the ciphertext
ByteArrayInputStream in = new ByteArrayInputStream( cipherText, 0, dataLength );
// Now create the block decryptor and pass in a new instance
// of an AES decryptor engine with the specified block length
BlockDecryptor cryptoStream = new BlockDecryptor(new AESDecryptorEngine( keydec128 ), in );
byte[] T= new byte[dataLength];
// Read the decrypted text from the AES decryptor stream and
// return the actual length read
int length= cryptoStream.read( T );
String str= new String(T);
int i=str.indexOf("</msg>");
str=str.substring(0,i+6);
return str;
}
}
于 2012-05-24T08:23:15.307 回答
2
查看AESEncryptorEngine和AESDecryptorEngine(在 Google 的帮助下)。
于 2012-05-24T08:22:39.620 回答
0
或者,您可以考虑为 j2me 使用充气城堡,如此处所建议的。
于 2012-05-24T14:25:11.283 回答