У меня возникла проблема с шифрованием с использованием java AES/CBC/PKCS7Padding. Я уже искал и следил за ходом до использования провайдера BouncyCastle
. Но я до сих пор не могу получить право шифрованияJAVA-шифрование с AES/CBC/PKCS7Padding
Пусть говорят, что требования:
Тип шифрования: Симметричный
Алгоритм: AES
Размер блока = 128bit (16 байт)
Cipher режим: CBC
режим Перетяжка : PKCS7
Шифрование длина ключа: 256 бит (32 байта)
вектор инициализации длина (IV): 128 бит (16 байт)
образец:
Plain данные = ABC123
Зашифрованные данные (в формате base64) = CtGtW4hJfXxilSfNR1xmrg ==
и мой код ...
public final class StringFunc {
final static String key = "jb2a19ou79rws6zknjlr803fvfgiyp1k";
final static String algorithm = "AES/CBC/PKCS7Padding";
final static String iv = "hod74ty97wr97g83";
private static Cipher cipher = null;
private static SecretKeySpec skeySpec = null;
private static IvParameterSpec ivSpec = null;
private static void setUp(){
try{
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
skeySpec = new SecretKeySpec(key.getBytes(), "AES");
ivSpec = new IvParameterSpec(iv.getBytes());
cipher = Cipher.getInstance(algorithm);
}catch(NoSuchAlgorithmException | NoSuchPaddingException ex){
}
}
public static String encrypt(String str){
try{
Integer strL = (int) Math.ceil(str.length()/8.0);
Integer strB = strL*8;
str = padRight(str, '', strB);
setUp();
try {
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, ivSpec);
} catch (InvalidAlgorithmParameterException ex) {
return "";
}
byte[] enc = cipher.doFinal(str.getBytes());
return new String(Base64.encodeBase64(enc));
}catch(InvalidKeyException | IllegalBlockSizeException | BadPaddingException ex){
return "";
}
}
public static String padRight(String msg, char x, int l) {
String result = "";
if (!msg.isEmpty()) {
for (int i=0; i<(l-msg.length()); i++) {
result = result + x;
}
result = msg + result;
}
return result;
}
}
Я до сих пор не могу получить правильный шифрования. Кто-нибудь может помочь или дать предложение?
В чем проблема? –
Я проверил ваш код, и у меня есть исключение. вы проверили свой код? не исключение? –
проблема, я просто не могу получить правильный результат, как тот, который мне дал. Код, уже сокращенный по этой причине, делает его коротким сэром, вы не можете просто скопировать вставку для его запуска. – lendir