如何在android中将加密文本转换为二进制格式

时间:2013-01-20 16:43:14

标签: java android base64

我加密了editText数据,并使用base64库解密了那些数据...我附加了common_codec 1.4.jar文件......

public String encrypt(String unencryptedString) {
        String encryptedString = null;

        try {
            cipher.init(Cipher.ENCRYPT_MODE, key);
            byte[] plainText = unencryptedString.getBytes(UNICODE_FORMAT);
            byte[] encryptedText = cipher.doFinal(plainText);
            encryptedString = new String(Base64.encodeBase64(encryptedText));

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

这是加密字符串的代码...... 现在我希望这个encryptedString转换成二进制形式,即0和1。 我怎么能把它转换成???

我用

public String hexToBin(String EncryptedString)
{
    String BinStr=null;
    Integer i=Integer.toBinaryString(0xFF & EncryptedString);   
    BinStr=Integer.toBinaryString(i);
    return BinStr;
}

但我收到了错误......

这是正确的还是我必须使用的任何其他方法???

1 个答案:

答案 0 :(得分:1)

您需要输入IV,密码类型和密码模式以及加密的填充方案,因为我在代码中进行了一些更改。由于您已将密文编码为base64以使解密工作,因此您需要首先解码密文的base64编码。

public String encrypt(String unencryptedString, byte[] ivBytes, byte[] keyBytes){

 String encryptedString = null;

   try {

        AlgorithmParameterSpec ivSpec = new IvParameterSpec(ivBytes);
        SecretKeySpec Key = new SecretKeySpec(keyBytes, "AES");
        Cipher cipher = null;
        cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        cipher.init(Cipher.ENCRYPT_MODE, key);
        byte[] plainText = unencryptedString.getBytes(UNICODE_FORMAT);
        byte[] encryptedText = cipher.doFinal(plainText);
        encryptedString = new String(Base64.encodeBase64(encryptedText));

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