0

我正在尝试在我的应用程序中动态解密图像。我正在通过互联网下载它们,而不是我想解密它们并将它们显示为背景或图像视图。所以我的问题是我无法弄清楚如何制作整个逻辑。

现在,我正在通过我编写的方法生成的路径从 sdcard 获取图像:

    public static String getImagePathFromExternalStorage(String server, int userId, String filename){
        String path=Environment.getExternalStorageDirectory()
        + "/Documents/Users/"+server+"/"+userId+"/Storage/" + filename;

        return path;
    }

    public static String getImagePathFromInternalStorage(String server, int userId, String filename, Context context){
        String path = context.getFilesDir() + "/documents/users/"+server+"/"+userId+"/storage/"+filename;

        return path;
    }

我正在解密这样的图像:

Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
SecretKeySpec keySpec = new SecretKeySpec("01234567890abcde".getBytes(), "AES");
IvParameterSpec ivSpec = new IvParameterSpec("fedcba9876543210".getBytes());
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
ByteArrayInputStream input = new ByteArrayInputStream(mediaCollBuffer); 
CipherInputStream cis = new CipherInputStream(input, cipher);

所以我试图弄清楚如何通过它的路径获取文件,即时解密并将其设置为背景。有什么建议么?

4

1 回答 1

0

尝试这个 :

File bufferFile = new File(path);
FileInputStream fis   = new FileInputStream(bufferFile);

Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
SecretKeySpec keySpec = new SecretKeySpec("01234567890abcde".getBytes(), "AES");
IvParameterSpec ivSpec = new IvParameterSpec("fedcba9876543210".getBytes());
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
CipherInputStream cis = new CipherInputStream(fis, cipher);
Bitmap ops = BitmapFactory.decodeStream(cis);
logo.setImageBitmap(ops);

我认为这应该有所帮助。

于 2011-11-28T13:37:00.923 回答