AES加密J2ME [英] AES encryption j2me

查看:213
本文介绍了AES加密J2ME的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图做的AES加密j2me.I用几乎相同的code的Andr​​oid和它的正常工作there.Following是code块。我得到空的输出

I am trying to do AES encryption in j2me.I used almost same code for android and it's working fine there.Following is the block of code. I'm getting null as output

package cartoon;

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

public class MCrypt {

private String iv = "0123456789abcdef";// iv 
private IvParameterSpec ivspec;
private SecretKeySpec keyspec;
private Cipher cipher;
private String SecretKey = "fedcba9876543210";// secretKey 

public MCrypt() {
    ivspec = new IvParameterSpec(iv.getBytes(), 0, iv.getBytes().length);

    keyspec = new SecretKeySpec(SecretKey.getBytes(), 0, iv.getBytes().length, "AES");

}

String Decrypt(String text) throws Exception {
    cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

    cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);
    byte[] results = null;
    int results1 = cipher.doFinal(Base64.decode(text), 0, Base64.decode(text).length, results, 0);
    System.out.println("String resultssssssssssssss " + results1);
    return new String(results, "UTF-8");
}

String Encrypt(String text)
        throws Exception {
    cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

    System.out.println("String input : " + text);

    cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
    byte[] results = null;
    int results1 = cipher.doFinal(text.getBytes(), 0, text.getBytes().length, results, 0);
    return Base64.encode(results);
}
}

印刷效果

MCrypt mcrypt = new MCrypt();
    try {
        encrypted = mcrypt.Encrypt("id=450");

        decrypted = new String(mcrypt.Decrypt(encrypted));
        System.out.println("Encrypted Text : " + encrypted);
        System.out.println("Decrypted Text : " + decrypted);

    } catch (Exception e) {
        e.printStackTrace();
    }

我在哪里去了?

Where am I going wrong?

推荐答案

请尝试以下

您应该初始化字节数组第一个适当

You should initialize the byte array first appropriately

String Decrypt(String text) throws Exception {
    cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

    cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);

    // here
    byte[] results = cipher.doFinal(Base64.decode(text));

    int results1 = cipher.doFinal(Base64.decode(text), 0, Base64.decode(text).length, results, 0);
    System.out.println("String resultssssssssssssss " + results1);
    return new String(results, "UTF-8");
}

String Encrypt(String text)
    throws Exception {
    cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

    System.out.println("String input : " + text);

    cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);

    // and here
    byte[] results = cipher.doFinal(text.getBytes());

    int results1 = cipher.doFinal(text.getBytes(), 0, text.getBytes().length, results, 0);
    return Base64.encode(results);
}

这篇关于AES加密J2ME的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆