我加密了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;
}
但我收到了错误......
这是正确的还是我必须使用的任何其他方法???
答案 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;
}