Base64 apache.commons 找不到 .encodeBase64 符号
Base64 apache.commons .encodeBase64 symbol not found
我正在使用密钥 before/after 将加密 class 写入 encrypt/decrypt 数据以发送 TCP 数据。我在让 org.apache.commons.codec.binary.Base64
在我的系统上工作时遇到问题。在大多数情况下,我可以看到人们将此与 android studio 联系起来,但是,我使用的是记事本++和命令行,但仍然遇到问题。
我已将 commons-codec-1.10.jar
添加到我的项目目录中。我在命令行运行:
javac -cp .;commons-codec-1.10.jar Server.java ... CryptoUtil.java
我在顶部有这个
import org.apache.commons.codec.binary.Base64;
我的错误是:
CryptoUtil.java:60: error: cannot find symbol
String encStr = new Base64.encodeBase64String(out);
^
symbol: class encodeBase64String
location: class Base64
CryptoUtil.java:87: error: cannot find symbol
byte[] enc = new Base64.decodeBase64(encryptedText);
^
symbol: class decodeBase64
location: class Base64
2 errors
还有我的封闭函数:
public String encrypt(String secretKey, String plainText)
throws NoSuchAlgorithmException,
InvalidKeySpecException,
NoSuchPaddingException,
InvalidKeyException,
InvalidAlgorithmParameterException,
UnsupportedEncodingException,
IllegalBlockSizeException,
BadPaddingException{
//Key generation for enc and desc
KeySpec keySpec = new PBEKeySpec(secretKey.toCharArray(), salt, iterationCount);
SecretKey key = SecretKeyFactory.getInstance("PBEWithMD5AndDES").generateSecret(keySpec);
// Prepare the parameter to the ciphers
AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, iterationCount);
//Enc process
ecipher = Cipher.getInstance(key.getAlgorithm());
ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);
String charSet="UTF-8";
byte[] in = plainText.getBytes(charSet);
byte[] out = ecipher.doFinal(in);
String encStr = new Base64.encodeBase64String(out);
return encStr;
}
public String decrypt(String secretKey, String encryptedText)
throws NoSuchAlgorithmException,
InvalidKeySpecException,
NoSuchPaddingException,
InvalidKeyException,
InvalidAlgorithmParameterException,
UnsupportedEncodingException,
IllegalBlockSizeException,
BadPaddingException,
IOException{
//Key generation for enc and desc
KeySpec keySpec = new PBEKeySpec(secretKey.toCharArray(), salt, iterationCount);
SecretKey key = SecretKeyFactory.getInstance("PBEWithMD5AndDES").generateSecret(keySpec);
// Prepare the parameter to the ciphers
AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, iterationCount);
//Decryption process; same key will be used for decr
dcipher=Cipher.getInstance(key.getAlgorithm());
dcipher.init(Cipher.DECRYPT_MODE, key,paramSpec);
byte[] enc = new Base64.decodeBase64(encryptedText);
byte[] utf8 = dcipher.doFinal(enc);
String charSet="UTF-8";
String plainStr = new String(utf8, charSet);
return plainStr;
}
new
关键字需要创建一个类型。正如小插入符指出的那样,Base64
后面应该有方括号 ()
。
然而,Base64
是 static
方法的集合,所以在这种情况下,只要删除 new
就完成了。
String encStr = Base64.encodeBase64String(out);
应该可以解决问题。
Android 开发者:
编码:
使用 Base64.encode(yourByteArray,Base64.DEFAULT)
解码:
使用 Base64.decode(stringData,Base64.DEFAULT)
确保导入,android.util.Base64
我正在使用密钥 before/after 将加密 class 写入 encrypt/decrypt 数据以发送 TCP 数据。我在让 org.apache.commons.codec.binary.Base64
在我的系统上工作时遇到问题。在大多数情况下,我可以看到人们将此与 android studio 联系起来,但是,我使用的是记事本++和命令行,但仍然遇到问题。
我已将 commons-codec-1.10.jar
添加到我的项目目录中。我在命令行运行:
javac -cp .;commons-codec-1.10.jar Server.java ... CryptoUtil.java
我在顶部有这个
import org.apache.commons.codec.binary.Base64;
我的错误是:
CryptoUtil.java:60: error: cannot find symbol
String encStr = new Base64.encodeBase64String(out);
^
symbol: class encodeBase64String
location: class Base64
CryptoUtil.java:87: error: cannot find symbol
byte[] enc = new Base64.decodeBase64(encryptedText);
^
symbol: class decodeBase64
location: class Base64
2 errors
还有我的封闭函数:
public String encrypt(String secretKey, String plainText)
throws NoSuchAlgorithmException,
InvalidKeySpecException,
NoSuchPaddingException,
InvalidKeyException,
InvalidAlgorithmParameterException,
UnsupportedEncodingException,
IllegalBlockSizeException,
BadPaddingException{
//Key generation for enc and desc
KeySpec keySpec = new PBEKeySpec(secretKey.toCharArray(), salt, iterationCount);
SecretKey key = SecretKeyFactory.getInstance("PBEWithMD5AndDES").generateSecret(keySpec);
// Prepare the parameter to the ciphers
AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, iterationCount);
//Enc process
ecipher = Cipher.getInstance(key.getAlgorithm());
ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);
String charSet="UTF-8";
byte[] in = plainText.getBytes(charSet);
byte[] out = ecipher.doFinal(in);
String encStr = new Base64.encodeBase64String(out);
return encStr;
}
public String decrypt(String secretKey, String encryptedText)
throws NoSuchAlgorithmException,
InvalidKeySpecException,
NoSuchPaddingException,
InvalidKeyException,
InvalidAlgorithmParameterException,
UnsupportedEncodingException,
IllegalBlockSizeException,
BadPaddingException,
IOException{
//Key generation for enc and desc
KeySpec keySpec = new PBEKeySpec(secretKey.toCharArray(), salt, iterationCount);
SecretKey key = SecretKeyFactory.getInstance("PBEWithMD5AndDES").generateSecret(keySpec);
// Prepare the parameter to the ciphers
AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, iterationCount);
//Decryption process; same key will be used for decr
dcipher=Cipher.getInstance(key.getAlgorithm());
dcipher.init(Cipher.DECRYPT_MODE, key,paramSpec);
byte[] enc = new Base64.decodeBase64(encryptedText);
byte[] utf8 = dcipher.doFinal(enc);
String charSet="UTF-8";
String plainStr = new String(utf8, charSet);
return plainStr;
}
new
关键字需要创建一个类型。正如小插入符指出的那样,Base64
后面应该有方括号 ()
。
然而,Base64
是 static
方法的集合,所以在这种情况下,只要删除 new
就完成了。
String encStr = Base64.encodeBase64String(out);
应该可以解决问题。
Android 开发者:
编码:
使用 Base64.encode(yourByteArray,Base64.DEFAULT)
解码:
使用 Base64.decode(stringData,Base64.DEFAULT)
确保导入,android.util.Base64