android - 将密码输入流转换为字节数组?

标签 android encryption inputstream

简单地说,我有一个 CipherInputStream,我想将其转换为字节数组。其他帖子没有帮助。如何实现这一目标?

FileInputStream fis = new FileInputStream("dataPath/data");
SecretKeySpec sks = new SecretKeySpec("password".getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, sks);
CipherInputStream cis = new CipherInputStream(fis, cipher);

那么如何从 cis 检索字节数组?

最佳答案

CipherInputStream 是标准 InputStream 的实现,因此您可以使用 ByteArrayOutputStream 将其读入字节数组,例如:

CipherInputStream cis = ...
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int len;
byte[] buffer = new byte[4096];
while ((len = cis.read(buffer, 0, buffer.length)) != -1) {
    baos.write(buffer, 0, len);
}
baos.flush();
byte[] cipherByteArray = baos.toByteArray(); // get the byte array

关于android - 将密码输入流转换为字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36679390/

相关文章:

c# - 即使使用相同的 key ,加密输出也总是不同

Java - 如何存储输入流中的最新字符串?

android - 如何使用gomobile build sdk-arr-libs访问web?

android - GCM(Google Cloud Messaging)在android编程中是否比Web服务通信有任何优势

java - 更改加密文件的 AES key 而不解密/重新加密它

java - 在 Java 6 中将 InputStream 写入文件的有效方法

java - 如何检测非法的 UTF-8 字节序列以在 java 输入流中替换它们?

android - 如何为谷歌地图设置自定义标记标题

android - 添加 android assembleRelease 依赖

c - 在 polarssl c 中签署和验证 rsa 签名