gpt4 book ai didi

java - 在 Java 中安全解码 Base64 字符数组

转载 作者:搜寻专家 更新时间:2023-11-01 02:22:56 26 4
gpt4 key购买 nike

我需要解码 Base64 char 数组而不将其转换为 String . char 数组是一个密码,出于安全原因,我不允许将其转换为 String(此要求是不可协商的)。

java.util.Base64.Decoder . decode方法接受 byte[], ByteBuffer , 和 String ,但不是 char[]

使用字符串存储敏感数据的安全问题

根据 Jim Archer 的评论

  • 字符串是不可变的
  • 它们只能被垃圾收集器从内存中清除(不能强制这样做)

最佳答案

创建一个 CharBufferchar[] 支持。然后使用 Charset.encode将字节缓冲区编码为 ByteBuffer . Base64 Decoder 接受 ByteBuffer .

private static final java.util.Base64.Decoder BASE_64_DECODER= new java.util.Base64.Decoder();

private static final String ENCODING = "UTF-8";// Use the correct encoding here.

private byte[] decodePassword(char[] password) {
CharBuffer charBuffer = CharBuffer.wrap(password);
ByteBuffer byteBuffer = Charset.forName(ENCODING).encode(charBuffer);
return BASE_64_DECODER.decode(byteBuffer);
}

受 azurefox 的评论和此处答案的启发:https://stackoverflow.com/a/9670279/1361506

关于java - 在 Java 中安全解码 Base64 字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34440695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com