【发布时间】:2011-08-09 06:05:38
【问题描述】:
我的目标是在 Iphone 中加密数据并在 java 服务器上解密。
我正在使用对称加密。
我已经在 java 端使用 KeyGenerator 生成了密钥。
生成key的代码如下:
//生成密钥的Java代码
File keyFile = new File("F:/key","mykey.key");
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128);
SecretKey skey = kgen.generateKey();
byte[] enc= skey.getEncoded();
FileUtils.writeStringToFile(keyFile ,Base64.encodeBase64String(enc),"UTF-8");
下面是解密的java代码:
//从文件中获取密钥
File file = new File("F:/key", "mykey.key");
SecretKeySpec keySpec= null;
try {
byte[] keyBytes = Base64.decodeBase64(FileUtils.readFileToString(file,"UTF-8"));
keySpec= new SecretKeySpec(keyBytes, 0, 16, "AES");
byte[] raw = keySpec.getEncoded();
} catch (Exception e) {
e.printStackTrace();
}
//解密字符串 encryptedString(from Iphone)
byte[] tempByte = Base64.decodeBase64(encryptedString);
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, keySpec);
byte[] cipherData = cipher.doFinal(tempByte);
String ttt = new String(cipherData ,"UTF-8");
System.out.println(ttt);
并且 iphone 代码类似于以下链接中给出的代码: Encrypting data with Objective-C and decrypt it with Java Problem
我在 java 中解密时遇到以下异常。
javax.crypto.BadPaddingException:给定最终块未正确填充
请帮忙...
【问题讨论】:
标签: java iphone encryption