我知道,有很多关于这个主题的线索--我读过大部分,但没有一个给我正确的答案。
import android.util.Base64;
import java.security.Key;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
public class Crypter {
public static void main(String[] args) {
String data = "Arnab C";
final String enc = DarKnight.getEncrypted(data);
System.out.println("Encrypted : " + enc);
System.out.println("Decrypted : " + DarKnight.getDecrypted(enc));
}
static class DarKnight {
private static final String ALGORITHM = "AES";
private static final byte[] SALT = "tHeApAcHe6410111".getBytes();// THE KEY MUST BE SAME
private static final String X = DarKnight.class.getSimpleName();
static String getEncrypted(String plainText) {
if (plainText == null) {
return null;
}
Key salt = getSalt();
try {
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, salt);
byte[] encodedValue = cipher.doFinal(plainText.getBytes());
return Base64.encode(encodedValue,Base64.DEFAULT);
} catch (Exception e) {
e.printStackTrace();
}
throw new IllegalArgumentException("Failed to encrypt data");
}
public static String getDecrypted(String encodedText) {
if (encodedText == null) {
return null;
}
Key salt = getSalt();
try {
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, salt);
byte[] decodedValue = Base64.decode(encodedText, Base64.DEFAULT);
byte[] decValue = cipher.doFinal(decodedValue);
return new String(decValue);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
static Key getSalt() {
return new SecretKeySpec(SALT, ALGORITHM);
}
}
}
import com.sun.org.apache.xml.internal.security.utils.Base64;
import android.util.Base64;
由于该更改,我不得不向base64.decode和base64.encode添加一个标志。解码效果良好:
byte[] decodedValue = Base64.decode(encodedText, Base64.DEFAULT);
但是当向base64.encode添加标志时,奇怪的事情发生了:
当我写“return base64.encode(”)时,Android Studio告诉我它需要一个byte[]输入和一个int标志。所以我想,我可以简单地使用变量encodedValue作为第一个参数,因为它是一个byte[]。作为下一个参数,我可以使用base64.default,它是一个值为0的int。但是Android Studio不同意:不兼容的类型,required:java.lang.string,found:byte[]。
如有任何帮助,不胜感激。
使用encodeToString()
而不是encode()
。第一个返回函数返回类型所期望的字符串
,后者返回字节[]
。
文档:https://developer.android.com/reference/android/util/base64
本文向大家介绍如何使用nodejs对base64进行编解码?相关面试题,主要包含被问及如何使用nodejs对base64进行编解码?时的应答技巧和注意事项,需要的朋友参考一下 轮子, https://www.npmjs.com/package/js-base64
问题内容: 关于JDK 5的这个问题说,[DK 5没有提供任何实现,但是JDK 6应该有一个实现。 据我所知,该类未随JDK提供,并且无法在其中找到任何其他类似的类。 那么,JDK6的情况如何? 我知道有许多类似Commons和JBoss的实现,但是我们有一个严格的第三方lib策略,因此我试图避免重新发明轮子。 问题答案: 不,在Java 5和Java 6之间情况没有改变。 不幸的是,Java S
本文向大家介绍使用base64对图片的二进制进行编码并用ajax进行显示,包括了使用base64对图片的二进制进行编码并用ajax进行显示的使用技巧和注意事项,需要的朋友参考一下 使用base64对图片的二进制进行编码并用ajax进行显示 有时候我们需要动态的将图片的二进制在页面上进行显示,如我们需要弄一个验证码的功能,那么如果我们的验证码的图片在后台得到的是该图片的二进制,那么当我们需要在页面上
问题内容: 我正在尝试从网上获取图片并使用base64对其进行编码。 到目前为止,我基本上是: 这似乎非常接近解决方案,但我不能完全解决它。它识别数据类型并给出输出: 但是,缓冲区列表“ bl”似乎为空。 提前致谢! 问题答案: BufferList已过时,因为它的功能现在在Node核心中。唯一棘手的部分是将请求设置为不使用任何编码:
我试图防止CRLF注入(在用户输入很少的url中),并试图对url中的用户输入进行编码。我知道我也可以使用输入验证,但如果我使用ESAPI编码器,它是否有相应的解码器?如果它有,那么它是什么?如果不是,那么可以做什么来执行相同的编码和解码?
本文向大家介绍C#使用base64对字符串进行编码和解码的测试,包括了C#使用base64对字符串进行编码和解码的测试的使用技巧和注意事项,需要的朋友参考一下 需要引入命名空间: 解码: 编码: 测试: 结果: 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对呐喊教程的支持。如果你想了解更多相关内容请查看下面相关链接